1155: 字符串比较 多实例

Description

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

Input

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

Output

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

Sample Input

abcBbcAbaABcefABce

Sample Output

YESYESNO

HINT

Source  

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[10000],b[10000];
int    main  ()
{
       memset( a , 0 , sizeof(a) );//重置为0
	   memset( b , 0 , sizeof(b) );
	   //多实例测试
	   while ( scanf("%s%s",&a,&b) != EOF )
	   {
	         int lena,lenb;
			 int i,temp;
			 lena = strlen(a); //a数组的长度
			 lenb = strlen(b); //b数组的长度
			 
			 //比较函数,若a==b则返回0
			 if ( strcmp(a,b)==0 )
			 {
			       cout<<"NO"<<endl;
			 }	   
			 else
			 {
				 //找到数组最长的作为临界标志值
			       if ( lena>lenb )   
					   temp=lena;
				   else
					   temp=lenb;
                     
				   //找到任意一个符合if语句的输出"yes",然后break退出循环
				   for ( i=0 ; i<temp ; i++ )
				   {
				         if  (a[i]==b[i])   //若相等i坐标下的数没有对比的价值,因而跳过
							 continue;//跳过本次i执行下一个i
						 else
						 {   
							 //a、b数组在i位置下的数都是大写英文字母或者都是小写字母,a、b同类型的才可作比较
							 if ( a[i]>='a' && a[i]<='z'  &&  b[i]>='a' && b[i]<='z'  ||  a[i]>='A' && a[i]<='Z' && b[i]>='A' && b[i]<='Z' )
							 {
								 //若b[i]此时字母位置较a[i]靠后,则ASCII码较大
							    if ( a[i]<b[i] )
								{    //满足题意的输出
								     cout<<"YES"<<endl;
								   break;
								}
								else
								{
								    cout<<"NO"<<endl;
									break;
								}
							 }
							 //当a数组为小写字母,b数组为大写字母
							 else  if ( a[i]>='a' && a[i]<='z' && b[i]>='A' && b[i]<='Z' )
							 {     //小写字母转换为大写字母ASCII码中减去32
							        if ( a[i]-32 < b[i] )
									{
										cout<<"YES"<<endl;
									     break;  
									}
									else
										cout<<"NO"<<endl;
                                         break;
							 }
							 else  if (a[i]>='A' && a[i]<='Z' && b[i]>='a' && b[i]<='z' )
							 {//大写化为小写字母作比较
							       if (a[i]+32<=b[i])
								   {
									   cout<<"YES"<<endl;
								       break;
								   }
								   else
								   {
									    cout<<"NO"<<endl;
								   break;
								   }
							 }
                             else
							 {
                                   if ( a[i] < b[i] )
								   {
								        cout<<"YES"<<endl;
										break;
								   }
								   else
								   {
								        cout<<"NO"<<endl;
										break;
								   }

							 }

						 }

				   }
			 }
	   }


return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值