题解 | #找出字符串中第一个只出现一次的字符#

找出字符串中第一个只出现一次的字符

https://www.nowcoder.com/practice/e896d0f82f1246a3aa7b232ce38029d4

#include <stdio.h>
#include <string.h>

int main() {
    char str[1000] = {'\0'};
    scanf("%s", str);
    int len = strlen(str);
    char letter[26] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
                       'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
                      };
    int ret[2][26];
    for (int i = 0; i < 26; i++) {
        ret[0][i] = 0;
        ret[1][i] = 0;
    }

    for (int i = 0; i < 26; i++) {
        for (int j = 0; j < len; j++) {
            if (letter[i] == str[j]) {
                ret[0][i]++;
                ret[1][i] += j;
            }
        }
    }

    int onlyOneletter = 0;
    for (int i = 0; i < 26; i++) {
        if (ret[0][i] == 1) {
            onlyOneletter++;
        }
    }
    if (onlyOneletter == 0) {
        printf("-1");
        return 0;
    }

    int ret_1[26];
    for (int i = 0; i < 26; i++) {
        ret_1[i] = 1000;
    }

    for (int i = 0; i < 26; i++) {
        if (ret[0][i] == 1) {
            ret_1[i] = ret[1][i];
        }
    }

    for (int i = 0; i < 26; i++) {
        for (int j = 0; j < 26 - i - 1; j++) {
            if (ret_1[j] > ret_1[j + 1]) {
                int temp = ret_1[j];
                ret_1[j] = ret_1[j + 1];
                ret_1[j + 1] = temp;
            }
        }
    }
    int result = ret_1[0];

    printf("%c", str[result]);
    return 0;
}

全部评论

相关推荐

快点约我面试吧
投递百度等公司10个岗位
点赞 评论 收藏
分享
07-20 12:08
已编辑
江南大学 图像识别
机械牛马勇闯秋招:把校园经历里面做过的项目,大作业,课设,毕设啥的,扩写,写成具体的项目经历,自我评价缩写别占篇幅,不然这简历真没东西,初筛都过不了
点赞 评论 收藏
分享
zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务