题目:在字符串中查找出第一个只出现一次的字符。如输入"abaccdeff",则输出b所在的下标。 方法一:时间复杂度为o(n*n)。遍历字符串中的每个字符,然后用该字符在字符串中进行查找,如果没有找到和当前字符相同的字符。则当前字符为第一个 只出现一次的字符。方法二:时间复杂度为o(n)。用一个辅助数组来做hash映射。第一次扫描时,更新在辅助数组中当前字符出现的次数。hash查找的时间复杂度为o(1)。第二次扫描时,在辅助数组中找出当前字符出现一次的位置。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; }
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; }
字符串中第一次出现的字符
最新推荐文章于 2024-07-14 03:39:45 发布