算法训练:字符串比较

资源限制
时间限制: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 }
复制代码

 



posted @   Xxaj5  阅读(387)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示