當前位置:網站首頁>ZZULIOJ--1155: 字符串比較 多實例

ZZULIOJ--1155: 字符串比較 多實例

2022-01-27 01:36:46 空景 Sadnes╰つ677

1155: 字符串比較 多實例

時間限制: 1 Sec  內存限制: 128 MB
提交: 5955  解决: 2571
[狀態] [討論版] [提交] [命題人:admin]
題目描述

比較字符串大小,但比較的規則不同字典序規則。字符比較新規則如下:A < a < B < b < ………… < Z < z。

輸入

輸入數據包含多個測試實例,每個測試實例占兩行,每一行有一個字符串(只包含大小寫字母, 長度小於10000)。

輸出

如果第一個字符串小於第二個,輸出YES,否則,輸出NO。
注意:A < a < B < b < ………… < Z < z。

樣例輸入 Copy

Bbc
Ab
a
ABcef
ABce
樣例輸出 Copy
YES
YES
NO

代碼 

#include<stdio.h>
#include<string.h>
int main()
{
    int i,j,len1,len2,res;
    char s1[10000]={0},s2[10000]={0};
    while(scanf("%s%s",s1,s2)!=EOF)//輸入兩個字符串
  {
        len1=strlen(s1);
        len2=strlen(s2);
        for(i=0;i<len1;i++){
            if(s1[i]>='a')
                s1[i]=(s1[i]-'a')*2+1;//將小寫字母轉化為前26*2中ascii碼為1,3,5...的字符
            else
                s1[i]=(s1[i]-'A')*2;//將大寫字母轉化為前26*2中ascii碼為2,4,6...的字符
        }
        for(i=0;i<len2;i++){
            if(s2[i]>='a')
                s2[i]=(s2[i]-'a')*2+1; //將小寫字母轉化為前26*2中ascii碼為1,3,5...的字符
            else
                s2[i]=(s2[i]-'A')*2; //將大寫字母轉化為前26*2中ascii碼為2,4,6...的字符
        }
        res=strcmp(s1,s2); //再調用strcmp比較轉化後的字符串進行比較
        if(res<0)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}
//tips:將大小寫字母往前轉化為26*2個字母,連續在一起,方便比較

版權聲明
本文為[空景 Sadnes╰つ677]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201270136459126.html

隨機推薦