#include <iostream> #include <string> using namespace std; char c[120]; bool visited[120]; int main() { while (scanf("%s", c) != EOF) { // 注意 while 处理多个 case string str = c; //转换成c++风格 for (int i = 0; i < 120; i++) { //初始化visited数组 visited[i] = false; } for (int i = 0; i < str.size(); i++) { if (visited[i] == true) { //之前访问过了,跳过 continue; } bool isFirst = true; //第一个不用加逗号,后面都要加个逗号先 for (int j = i + 1; j < str.size(); j++) { if (c[j] == c[i]) { if (isFirst) { visited[i] = true; //这里输出的时候要用 %c 不能用 %s 不然会输出不出来 //输出时: char -> %c string -> %s //输入时: %s -> char[], string printf("%c:%d,%c:%d", c[i], i, c[i], j); isFirst = false; } else { printf(",%c:%d", c[i], j); } visited[j] = true; } } if (!isFirst) { //只有有相同的字符(isFirst == false)才要回车, printf("\n"); } } } } // 64 位输出请用 printf("%lld")