您的位置:首页 > 其它

字符串中第一次出现的字符

2016-03-27 09:25 225 查看
题目:在字符串中查找出第一个只出现一次的字符。如输入"abaccdeff",则输出b所在的下标。
方法一:时间复杂度为o(n*n)。遍历字符串中的每个字符,然后用该字符在字符串中进行查找,如果没有找到和当前字符相同的字符。则当前字符为第一个 只出现一次的字符。
int firstNotRepeatingChar(string str)
{
if (str.empty())
return -1;
int pos = -1;
for (int i = 0; i < str.size(); ++i)
{
bool flag = true;
for (int j = 0; j < str.size(); ++j)
{
if (str[i] == str[j] && i != j)
{
flag = false;
break;
}
}
if (flag)
{
pos = i;
break;
}
}
return pos;
}
方法二:时间复杂度为o(n)。用一个辅助数组来做hash映射。第一次扫描时,更新在辅助数组中当前字符出现的次数。hash查找的时间复杂度为o(1)。第二次扫描时,在辅助数组中找出当前字符出现一次的位置。
int findPosString(string str)
{
//辅助数组,用作hash映射
vector<int> index(256);
//第一次遍历
for (int i = 0; i < str.size(); ++i)
{
index[str[i]]++;
}
int pos = -1;
//第二次遍历
for (int i = 0; i < str.size(); ++i)
{
if (index[str[i]] == 1)
{
pos = i;
break;
}
}
return pos;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: