字符串相等的条件:
1、不区分大小写
2、不区分顺序
比如“aBc”=“ABC”
“abc”=“bac”
要求:要有自己的算法思想。
======
一个方法:
1、先把两个字符串都转化为大写或小写
2、把字符串转化为char数组,然后使用冒泡或比较或其他排序算法实现排序
3、使用equals来判断排序后的连个字符串是否相等
这个方法可行,但是没有体现出做题人自己的算法思想,用的都是系统自带的实现功能。
1、不区分大小写
2、不区分顺序
比如“aBc”=“ABC”
“abc”=“bac”
要求:要有自己的算法思想。
======
一个方法:
1、先把两个字符串都转化为大写或小写
2、把字符串转化为char数组,然后使用冒泡或比较或其他排序算法实现排序
3、使用equals来判断排序后的连个字符串是否相等
这个方法可行,但是没有体现出做题人自己的算法思想,用的都是系统自带的实现功能。
我来总结一下:
方法1:比较str1和str2的长度,不等,则str1与str2不等。
若相等,先将两个字符都转化为大写或小写,然后对两个字符进行排序,再用equals比较。
方法2:先创建一个26大小的字符数组,依次存入字符0,然后将str1中字符依次遍历,在相应位置上+1;遍历str2,在相应位置上-1,看数组最后是否各位都为0.
方法3:将两字符串转化为大写或小写,设字符串长度为length,从0到length-1,对于str1中的字符,看str2中是否存在,存在则删除,继续遍历,直到str1中字符在str2中找不到对应的字符,则不等,或最终遍历完str1,则相等。
方法1:比较str1和str2的长度,不等,则str1与str2不等。
若相等,先将两个字符都转化为大写或小写,然后对两个字符进行排序,再用equals比较。
方法2:先创建一个26大小的字符数组,依次存入字符0,然后将str1中字符依次遍历,在相应位置上+1;遍历str2,在相应位置上-1,看数组最后是否各位都为0.
方法3:将两字符串转化为大写或小写,设字符串长度为length,从0到length-1,对于str1中的字符,看str2中是否存在,存在则删除,继续遍历,直到str1中字符在str2中找不到对应的字符,则不等,或最终遍历完str1,则相等。
#include<stdio.h>
#include<string.h>
#define MAX 100
int main()
{
int c_flag[26]={0};
int num, count=0;
char ch[2][MAX];
scanf("%s%s",ch[0],ch[1]);
num = strlen(ch[0]);
if(num != strlen(ch[1])) printf("两串不相等...\n");
else
{
for(int i=0; i<num; i++)
{
if(ch[0][i] < 'a')
ch[0][i] = ch[0][i]+32;
c_flag[ch[0][i]-'a']++;
if(ch[1][i] < 'a')
ch[1][i] = ch[1][i]+32;
c_flag[ch[1][i]-'a']--;
}
for(i=0; i<26; i++)
{
if(c_flag[i] == 0) count++;
}
if(count==26) printf("两串相等...\n");
else printf("两串不相等...\n");
}
return 0;
}