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

来源:互联网 发布:java list排序 编辑:程序博客网 时间:2024/06/07 01:05
题目:在字符串中查找出第一个只出现一次的字符。如输入"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;}
0 0
原创粉丝点击