题解 | #字符串排序#
字符串排序
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; }