字符串经典例题讲解--字符串比较

字符串经典例题讲解

标题:
写一个函数返回bool值,来判断给定的字符串A和B(假设都是小写字母),是否B中的字符都存在与A中,如果是返回true,否则返回false。

解题思路:
设置一个数组,这个数组用来记录A串中都出现过哪些字母,关键在于怎么建立两者之间的关系,将字母a放置在数组的0位置,字母b放置在数组的1位置,依次类推,标记这个数组;如果在这个串中有的字母出现多次,那么这个位置的数组的值++;再将B串中的字母与A串建立的数组进行比对。

代码实现:
#include
#include
bool checkString(const char *A,const char *B)
{
int arr[26]={0};//建立这个数组的目的是为了记录A串中出现了字母的次数,数组、结构体是聚合类型如果只是初始化一部分剩下的就是默认初始化为0.
while(*A!=’\0’)
{
arr[*A-‘a’]++;//将字母对应的放在数组的位置的解决办法,遍历的字母-‘a’,就是对应数组位置(难点的理解)
A++;
}

      while(*B!='\0')	
              {         
                    if(arr[*B-'a']==0)		 
                     {              
                            return false;	
           	       }		 
           	         B++;	
           	   }
           	   		 
           	     return true;

}

int main()
{
char *A1=“asdfgh”;
char *B1=“asdf”;
checkString(A1,B1);
return 0;
}

经验总结:
1、将字母对应的放在数组的位置的解决办法,遍历的字母-‘a’,就是对应数组位置(难点的理解)。
2、建立数组的目的是为了记录A串中出现了字母的次数,数组、结构体是聚合类型如果只是初始化一部分剩下的就是默认初始化为0.

你可能感兴趣的:(字符串)