LeetCode 859 亲密字符串(sqort)

LeetCode 859 亲密字符串(sqort),第1张

LeetCode 859 亲密字符串(sqort)


 知识点

 运用到了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);
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5634677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存