知识点
运用到了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条)