题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723
#include <stdio.h>
#include <string.h>
typedef struct {
char buf[101];
} str;
int main() {
str str[1001];
char temp[101];
int num, i, j, k, max = 0, len;
scanf("%d", &num);
for (i = 0; i < num; i++) {
scanf("%s", str[i].buf);
len = strlen(str[i].buf);
if (len > max) {
max = len;
}
}
for (i = 0; i < num - 1; i++) {
for (j = 0; j < num - 1; j++) {
{
k = 0;
if (str[j].buf[k] != str[j + 1].buf[k]) {
if (str[j].buf[k] > str[j + 1].buf[k]) {
sprintf(temp, "%s", str[j + 1].buf);
sprintf(str[j + 1].buf, "%s", str[j].buf);
sprintf(str[j].buf, "%s", temp);
}
} else {
while (k < strlen(str[i].buf)) {
k++;
if (str[j].buf[k] > str[j + 1].buf[k]) {
sprintf(temp, "%s", str[j + 1].buf);
sprintf(str[j + 1].buf, "%s", str[j].buf);
sprintf(str[j].buf, "%s", temp);
break;
} else {
if(str[j].buf[k] < str[j + 1].buf[k]){
break;
}
}
}
}
}
}
}
for (i = 0; i < num; i++) {
printf("%s\n", str[i].buf);
}
return 0;
}
