字符串判等【C语言】

字符串判等【C语言实现】

#Description
问题描述
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
Input

两行,每行包含一个字符串。

Output

若两个字符串相等,输出YES,否则输出NO。

Sample Input

a A bb BB ccc CCC
Aa BBbb CCCccc

Sample Output

YES

#思路
1.去掉空格
2.判断字符串长度是否相等,不等,则为NO,相等则继续进行判断
3.改变字符串大小写
4.给字符串排序
5.用strcmp函数直接进行判断
#CODE
代码如下

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{  	  
    int len1,len2;
    char line1[100]={'0'},line2[100]={'0'},line3[100]={'0'},line4[100]={'0'};//初始化字符串 
    char t;
    gets(line1);
    gets(line2);
    len1=strlen(line1);
    len2=strlen(line2);
    int i,j;
    j=0;
    for(i=0;i<len1;i++)
    {
        if(line1[i]!=' ')
        {
   	    line3[j]=line1[i];
  	    j++;    
        }//把Line1去掉空格给line3 
    }
    j=0;
    for(i=0;i<len2;i++)
    {
        if(line2[i] != ' ')
        {
            line4[j++]=line2[i];
        }      //把line2去掉空格给line4 
    }
   len1=strlen(line3);
   len2=strlen(line4);
   if(len1 != len2 )//长度不等直接判断为NO
   {
        printf("NO") ;
        return 0;
   }
   for(i=0;i<len1;i++)
   {
      if(line3[i]>='A'&&line3[i]<='Z')
      {
          line3[i]=line3[i]+32; //A与a相差32,实际上是把大写全变为小写 
      }
      if(line4[i]>='A'&&line4[i]<='Z')//在一个循环里对两个line进行处理 
     {
         line4[i]=line4[i]+32;
     }
   }
  for(i=1;i<len1;i++)//冒泡排序,通过ASCII码进行比较 
  {    
      for(j=0;j<len1-i;j++)
      {
          if(line3[j]>line3[j+1])
          {
              t=line3[j];
              line3[j]=line3[j+1];
              line3[j+1]=t; 
          }
          if(line4[j]>line4[j+1]) //在一个循环,对两个line进行处理,减小时空复杂度 
          {
              t=line4[j];
              line4[j]=line4[j+1];
              line4[j+1]=t; 
          }
      }
  }
  if(strcmp(line3,line4)==0)//strcmp 函数,对两个字符串进行判断
  {
      printf("YES");//出结果 
  }
  else
  {
      printf("NO");
  }
  return 0;
} 
原创文章 27 获赞 26 访问量 7796

猜你喜欢

转载自blog.csdn.net/unseven/article/details/105011461
今日推荐