查找一个字符串中第一个只出现两次的字符
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]
思路:
创建一个辅助数组(大小为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]
相关文章推荐
- 查找一个字符串中第一个只出现两次的字符。要求 时o(n) 空o(1)
- 查找一个字符串中第一个只出现两次的字符
- 查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
- 查找一个字符串中第一个只出现两次的字符
- 查找一个字符串中第一个只出现两次的字符。
- day07之包含min函数的栈+查找一个字符串中第一个只出现两次的字符
- 查找一个字符串中第一个只出现两次的字符
- 【每日一题】查找一个字符串中第一个只出现两次的字符
- 查找一个字符串中第一个只出现两次的字符
- 查找一个字符串中第一个只出现两次的字符
- 查找一个字符串中第一个只出现两次的字符,要求时间复杂度为O(N)。-替换字符串中的空格为$$$。要求时间复杂度为O(N)
- 查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
- 查找字符个数--查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
- 【字符串】查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) /查找一个字符串中第一个只出现两次的字符
- 【每日一题】查找一个字符串中第一个只出现两次的字符。要求时间复杂度为O(N),空间复杂度为O(1)
- 查找一个字符串中,出现的第一个单身字符。/一个字符串中查找第一个只出现一次的字符。 //要求复杂度为O(N).
- 一个字符串中查找第一个只出现一次的字符。 要求复杂度为O(N).
- 一个字符串中查找第一个只出现一次的字符。 要求复杂度为O(N).
- C++实现一个栈,出栈,入栈,返回最小值 时间复杂度为O(1),查找字符串中第一个重复出现的字符