首个重复字符
对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。
给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
测试样例:
"qywyer23tdd",11
返回:y
牛客网上的测试用例有问题
// 首个重复字符.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <string>
#include <map>
using namespace::std;
class FirstRepeat {
public:
char findFirstRepeat(string str, int n) {
// write code here
map<char, int> m;
for (int i = 0; i < str.size(); ++i) {
m[str[i]] ++;
}
for (int i = 0; i < str.size(); ++i) {
if (m[str[i]] > 1) return str[i];
}
return '\0';
}
};
int _tmain(int argc, _TCHAR* argv[])
{
string test = "kdbaaak";
FirstRepeat obj;
obj.findFirstRepeat(test, 7);
return 0;
}
答案错误:您提交的程序没有通过所有的测试用例
case通过率为0.00%
测试用例:
"kdbaaak",7
对应输出应该为:
a
你的输出为:
k
k 难道不是第一个重复的字符吗??
第二次做:
class FirstRepeat {
public:
char findFirstRepeat(string str, int n) {
// write code here
map<char, int> m ;
for ( int i = 0; i < str.size(); ++ i ) {
m[str[i]] ++ ;
}
for ( int i = 0; i < str.size(); ++ i ) {
if ( m[str[i]] > 1 ) return str[i] ;
}
return '#' ;
}
};
首个重复字符算法
本文介绍了一个寻找字符串中首次重复字符的高效算法,并提供了一段C++实现代码示例。该算法利用了哈希表(map)来记录每个字符出现的次数,通过两次遍历找出第一个重复的字符。
3万+

被折叠的 条评论
为什么被折叠?



