算法训练:字符串比较
资源限制
时间限制:1.0s 内存限制:512.0MB
独立实现标准字符串库的strcmp函数,即字符串比较函数,从键盘输入两个字符串,按字典序比较大小,前者大于后者输出1,前者小于后者输出-1,两者相等输出0。
样例输入:
apple one
样例输出:
-1
样例输入:
hello he
样例输出:
1
样例输入:
hello hello
样例输出:
0
思路:我的思路是分两种情况,前者长还是后者长分别做标记进行讨论。去网上搜没有找到类似的题目,如果有大神思路更好可以私信我。
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<stdbool.h> 5 6 int main(void) 7 { 8 char s[2][100] = {0}; 9 int i,j = -1; 10 bool f = false; 11 int flag = 0; 12 13 for (i = 0; i < 2; i++) 14 { 15 while (1) 16 { 17 scanf("%c", &s[i][++j]); 18 if (s[i][j] == ' ' || s[i][j] == '\n') 19 { 20 s[i][j] = 0; 21 j = -1; 22 break; 23 } 24 } 25 } 26 27 int len1 = strlen(s[0]); 28 int len2 = strlen(s[1]); 29 30 if (len1 >= len2) //如果字符串一较长 31 { 32 f = true; 33 } 34 35 if (f == true) //前者较长或者两者等长 36 { 37 for (i = 0; i < len1; i++) 38 { 39 if (s[1][i] != s[0][i]) 40 { 41 flag = 1; //字符串一长并且遇到不同 42 break; 43 } 44 } 45 } 46 else //后者较长 47 { 48 for (i = 0; i < len2; i++) 49 { 50 if (s[1][i] != s[0][i]) 51 { 52 flag = 2; //字符串二长并且遇到不同 53 break; 54 } 55 } 56 } 57 58 if (i == len1 && flag == 0) //前者字符串较长 并且可遍历到末尾 即两者相等 59 { 60 printf("0"); 61 } 62 else if (i < len1 && flag == 1) //前者较长并且两者出现不同字符 63 { 64 if (s[0][i] > s[1][i]) //说明前者更大 65 { 66 printf("1"); 67 } 68 else if(s[0][i] < s[1][i]) 69 { 70 printf("-1"); 71 } 72 } 73 else if(i < len2 && flag == 2) //后者较长并且出现不同字符 74 { 75 if (s[1][i] > s[0][i]) 76 { 77 printf("-1"); 78 } 79 else if (s[1][i] < s[0][i]) 80 { 81 printf("1"); 82 } 83 } 84 85 return 0; 86 }