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'; } };