题解 | #找位置#
找位置
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;
}

查看9道真题和解析
腾讯成长空间 5960人发布