您的位置:首页 > 其它

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

2017-07-20 00:46 176 查看
题目:查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)

思路:

创建一个辅助数组(大小为256),数组的下标表示字符的ASCII码,遍历字符串,每出现一个,在对应位置加一,最后遍历数组就可以找到第一个出现两次的字符

代码:

[align=left][/align]
char
find_char_instr(std::string 
&str)
[align=left]{[/align]
     char
num_of_char[256] = {
'\0'
};
     for
(size_t
idx
= 0;
idx
<
str.size();
++idx)
[align=left]     {[/align]
[align=left]          num_of_char[str[idx]]++;[/align]
[align=left]     }[/align]
[align=left]     [/align]
     for
(size_t
idx
= 0;
idx
<
str.size();
++idx)
[align=left]     {[/align]
          if
(num_of_char[str[idx]]
== 2)
              return
str[idx];
[align=left]     }[/align]
[align=left]     [/align]
     return
'\0';
[align=left]}[/align]
int
main()
[align=left]{[/align]
     std::string  str
=
"abdecefabcdfabc";
     char
ret
=
find_char_instr(str);
     if
(ret
==
'\0')
          cout
<<
"没有出现两次的字符。"
<<
endl;
[align=left]     else[/align]
          cout
<<
"第一个出现两次的字符为 :"
<<
ret
<<
endl;
[align=left]     system("pause");[/align]
     return
0;
[align=left]}[/align]
[align=left][/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐