HAUTOJ1155:字符串比较

news/2024/10/23 9:37:36/

题目描述::

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

输入:

输入数据包含多个测试实例,每个测试实例占两行,每一行有一个字符串(只包含大小写字母, 长度小于10000)。

输出:

如果第一个字符串小于第二个,输出YES,否则,输出NO。 
注意:A < a < B < b < ………… < Z < z。

样例输入 :

abc
Bbc
Ab
a
ABcef
ABce

样例输出 :

YES
YES
NO

问题分析: 

Z此问题主要在于如何将大小写字母按照A<a<B<b<……<Z<z,我们对每一个字符进行转化大写字母用奇数表示,小写字母用偶数表示,这样就将字符Aa....按照如上顺序表示出来了,这个顺序用1,3,5,7......分别表示对应的A,B,C,D......用2,4,6,8......表示了a,b,c,d......这样一来只需要将对应的字符转化为对应数字即可,而这个转化很容易实现:大写字母进行如下操作,

ch[i]=2*(ch[i]-'A'+1)-1;

小写字母进行如下操作:

ch[i]=2*(ch[i]-'a'+1)

这样就将每一个字符的相对大小表示出来了,然后直接按每一位比较即可。

比较过程的实现:令i=0如果第一个字符串的的c1[i]不等于\0说明字符串的还没结束进入循环,先判断c2[i]是否等于\0,如果等于说明字符串c2已经结束,如果不等于说明c2也没结束可以比较,如果c1[i]小于c2[i]说明已经分辩出来,打印YES同时跳出循环;如果c1[i]等于c2[i]说明在这一位并未分辨出字符串之间的大小关系,进行i++进入下一次循环比较下一位;如果c1[i]大于c2[i],打印NO同时跳出循环,这样就可以分辨出字符串c1与字符串c2之间的大小关系。如图:

 

代码实现

#include<stdio.h>
#include<string.h>
int main(){char c1[10001],c2[10001];int flag=0;while((scanf("%s",c1))!=EOF,(scanf("%s",c2))!=EOF){int x=0;while(c1[x]!='\0'){if(c1[x]>='A'&&c1[x]<='Z'){c1[x]=2*(c1[x]-'A'+1)-1;}else{c1[x]=2*(c1[x]-'a'+1);}x++;}x=0;while(c2[x]!='\0'){if(c2[x]>='A'&&c2[x]<='Z'){c2[x]=2*(c2[x]-'A'+1)-1;}else{c2[x]=2*(c2[x]-'a'+1);}x++;}int i=0;while(c1[i]!='\0'){if(c2[i]!='\0'){if(c1[i]>c2[i]){printf("NO\n");break;}else if(c1[i]<c2[i]){printf("YES\n");break;}else if(c1[i]==c2[i]){i++;}}else{printf("NO\n");break;}}   if(c2[i]=='\0'&&i==strlen(c1)){printf("NO\n");}else if(c2[i]!='\0'&&i==strlen(c1)){printf("YES\n");}}return 0;
}

运行结果:

提交结果:

 

 


http://www.ppmy.cn/news/154082.html

相关文章

NOIP 1155:回文三位数

1155&#xff1a;回文三位数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 30340 通过数: 19971 【题目描述】 如果一个数从左边读和从右边读都是同一个数&#xff0c;就称为回文数。例如6886就是一个回文数&#xff0c;求出所有的既是回文数又是素数的三位数。 …

ERC1155和ERC721的区别

简单来说&#xff0c;ERC1155 是 ERC721 的升级版&#xff0c;ERC1155 在 ERC721 的基础上&#xff0c;主要增加或改善了如下功能&#xff1a; 同时支持可替换代币(同质化代币)和不可替换代币(非同质化代币)&#xff1b;批量转账: 仅需要一次智能合约调用&#xff0c;就可以转…

1155低功耗cpu排行_1155针可以配那些cpu都列举出来

一、“A”的含义&#xff1a; Pentium 4处理器有Willamette、Northwood和Prescott三种不同核心。其中Willamette核心属于最早期的产品&#xff0c;采用0.18微米工艺制造。。。。 二、“B”的含义&#xff1a; 同样频率的产品&#xff0c;在更高的外频下可具备更高的前端总线&am…

Java智能合约工具包|Java调用智能合约|Java调用ERC20、ERC721、ERC1155合约

Magician-ContractsTools是一个用于调用智能合约的工具包&#xff0c;你可以非常容易地在Java程序中调用智能合约进行查询和写入操作。 有三个内置的标准合约模板&#xff0c;分别是ERC20、ERC721和ERC1155&#xff0c;如果你需要调用这三个合约中的标准函数&#xff0c;可以帮…

HDU 1155

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1155 Bungee Jumping Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1363 Accepted Submission(s): 599 Problem Description Once again,…

详解 ERC-20 vs ERC-777、ERC-721 vs ERC-1155: 它们有何不同?

ERC-20、ERC-777、ERC-721 和 ERC-1155 是以太坊上最受欢迎的通证标准&#xff0c;它们具体指什么以及各有什么不同&#xff1f; 1. 什么是ERC&#xff1f; 在我们开始深入讲不同的通证标准之前&#xff0c;需要追根溯源一下什么是 ERC &#xff1f; ERC 是 Ethereum Request …

1155:回文三位数

1155&#xff1a;回文三位数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 36785 通过数: 24127 【题目描述】 如果一个数从左边读和从右边读都是同一个数&#xff0c;就称为回文数。例如6886就是一个回文数&#xff0c;求出所有的既是回文数又是素数的三位数。…

Codeforces 1155

1155 D 题意 给你 \(n,x\) 和一个数组 \(a\) &#xff0c;现在你可以把 \(a\) 的至多一个子区间的所有元素乘上 \(x\) &#xff0c;问 \(a\) 数组最终的美丽值。一个数组的美丽值为 \(\max(0,该数组的最大子段和)\) 。 \((n\le 10^5,所有数\le 10^9)\) Examples input 5 -2 -3 …