题解 | #找位置#
找位置
https://www.nowcoder.com/practice/e3b2cc44aa9b4851bdca89dd79c53150
#include <stdio.h> #include <stdlib.h> #include <string.h> struct C { char c; int times; int position[100]; } c[100]; void IninC() { for (int i = 0; i < 100; i++) { c[i].times = 0; for (int j = 0; j < 100; j++) { c[i].position[j] = -1; } } } int main() { char str[100]; while (scanf("%s", str) != EOF) { IninC(); int j = 0; for (int i = 0; i < strlen(str); i++) { int num, flag = 0; //判断c中是否已经保存该字符 for (int k = 0; k < j; k++) { if (str[i] == c[k].c) { flag = 1; num = k; c[k].position[c[k].times] = i; break; } } if (flag) { c[num].times++; } else { c[j].position[0]=i; c[j].c = str[i]; c[j].times++; j++; } } for (int i = 0; i < j; i++) { if (c[i].times > 1) { for (int k = 0; k < c[i].times; k++) { if (k != c[i].times - 1) { printf("%c:%d,", c[i].c, c[i].position[k]); } else{ printf("%c:%d\n",c[i].c,c[i].position[k]); } } } } } return 0; }