zoukankan      html  css  js  c++  java
  • 算法训练:字符串比较

    资源限制
    时间限制: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] == '
    ')
    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 }


  • 相关阅读:
    bzoj 1031: [JSOI2007]字符加密Cipher
    python re模块实现计算器
    python sys模块和序列化模块
    python time时间模块
    python 发红包的小程序
    python ranndom模块及生成验证码
    python os模块练习题
    python os模块常用命令
    快速排序,归并排序
    选择排序和插入排序
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/12531761.html
Copyright © 2011-2022 走看看