题解 | #找位置#
找位置
https://www.nowcoder.com/practice/e3b2cc44aa9b4851bdca89dd79c53150
#include <iostream> #include<string> #include<vector> using namespace std; bool findinrepeat(char a,vector<char> b) //目标字符是否在重复序列中出现 { if (!b.empty()) { for (int i = 0; b[i] != '\0'; i++) { if (a == b[i]) { return true; } } } return false; } int main() { string a; while (cin >> a) { // 注意 while 处理多个 case vector<char> repeat; //重复的字符全部扔进去 for (int i = 0; a[i] != '\0'; i++) { if (!(findinrepeat(a[i], repeat))) //重复序列中没有 { for (int j = i + 1; a[j] != '\0'; j++) { if (a[i] == a[j]) { repeat.push_back(a[i]); //没找到,试图找到 break;//终止当前循环,下一个i } } } }//寻找重复的字符有哪些完毕,全部存入repeat中 //接下来的代码是依照格式打印 for (int i = 0; i < repeat.size(); i++) { int counter = 0; for (int k = 0; a[k] != '\0'; k++) { if(a[k] == repeat[i]) { counter++; //用于检验输出格式中是否带逗号 if (counter > 1) { cout << ","; } cout << a[k] << ":" <<k; } } cout << endl; } } } // 64 位输出请用 printf("%lld")