列表

详情


QR2. 首个重复字符

描述

对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。

给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。

测试样例:
"qywyer23tdd",11
返回:y

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 2ms, 内存消耗: 416KB, 提交时间: 2022-06-24

class FirstRepeat {
public:
    char findFirstRepeat(string A, int n) {
        // write code here
        unordered_map<char,int> dict;
        for(int i=0;i<n;i++)
        {
            if(dict.count(A[i])){
                return A[i];
            }
            else dict[A[i]]=1;
        }
        return 'a';
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 416KB, 提交时间: 2022-04-20

class FirstRepeat {
public:
    char findFirstRepeat(string A, int n) {
        int foo[256]={0};
        for(int i=0;i<n;i++){
            foo[A[i]]++;
            if(foo[A[i]]==2)
                return A[i];
        }
        return -1;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 416KB, 提交时间: 2022-01-22

class FirstRepeat {
public:
    char findFirstRepeat(string A, int n) {
        // write code here
        unordered_map<char, int> ans;
        for(int i = 0; i < n; i++){
            if(ans.find(A[i]) != ans.end()){
                return A[i];
            }
            else ans[A[i]]++;
        }
        return NULL;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 416KB, 提交时间: 2021-12-21

class FirstRepeat {
public:
    char findFirstRepeat(string A, int n) {
        // write code here
        map<char,int> charMap;
        for(int i=0;i<n;++i){
            char ch =A[i];
            if(charMap[ch]==1)
                return ch;
            else{
                charMap[ch]++;
            }
        }
        return NULL;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 416KB, 提交时间: 2021-12-05

class FirstRepeat {
public:
    char findFirstRepeat(string A, int n) {
        // write code here
        unordered_set<char> dic;
        for (auto& c : A) {
            if (dic.count(c))
                return c;
            else {
                dic.insert(c);
            }
        }
        return 'c';
    }
};

上一题