
知识点
运用到了qsort进行排序,可参考:qsort函数使用方法总结(详细全面+代码)_嵌入式与Linux那些事的博客-CSDN博客_qsort函数代码
C语言代码实现int cmp(const void* e1, const void* e2);
bool buddyStrings(char* s, char* goal) {
int count;
int i,a,b;
count=0;
a=0;
b=0;
int lens = strlen(s);
int lengoal = strlen(goal);
if (lens != lengoal || lens < 2) {
return false; //s小于2或长度不相等。
}
//字符相同
if (strcmp(s, goal) == 0) {
qsort(s, lens, sizeof(char), cmp); //字符串排序
for (i = 0; i < lens - 1; i++) {
if (s[i] == s[i + 1]) { //排序完有相同的就正确。
return true;
}
}
return false;
}
//字符不相同
for (i = 0; i < lens; i++) {
if (s[i] != goal[i]) {
count++; //不相同字符的个数
if (count == 1) {
a = i;
}
else {
b = i;
}
}
if (count > 2) { //两个以上不相同直接为错
return false;
}
}
//s和goal中两个字符不相同但两个字符相等
if (s[a] == goal[b] && s[b] == goal[a]) {
return true;
}
return false;
}
int cmp(const void* e1, const void* e2) {
return strcmp((char*)e1, (char*)e2);
}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)