//方法一:时间复杂度O(N*N)
#include<iostream>
#include<string>
using namespace std;
char FindChar(char* str)
{
int i, j;
int len = strlen(str);
for (i = 0; i < len; i++)//遍历字符串
{
int count = 0;
for (j = 0; j < len; j++)//统计字符出现次数
{
if (str[i] == str[j])
count++;
}
if (count == 2)//找到则返回该字符
return str[i];
}
return '*';//找不到则返回一个*
}
int main()
{
char *str = "abcdefabcdefabc";
cout << FindChar(str) << endl;
system("pause");
return 0;
}
方法二:时间复杂度O(N)
#include<iostream>
using namespace std;
char FindChar(char* str)
{
char hashtable[256] = { 0 };//定义哈希表保存字符出现的次数
size_t i = 0;
for (; i < strlen(str); i++)
{
hashtable[str[i]]++;
}
for (i = 0; i < strlen(str); i++)
{
if (hashtable[str[i]] == 2)//找到则返回下标
return str[i];
}
return '*';//找不到则返回一个*
}
int main()
{
char *str = "adbda";
cout<<FindChar(str)<<endl;
system("pause");
return 0;
}
查找一个字符串中第一个只出现两次的字符
最新推荐文章于 2019-05-06 16:46:36 发布