2049:【例5.19】字符串判等
【题目描述】
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
【输入】
两行,每行包含一个字符串。
【输出】
若两个字符串相等,输出YES
,否则输出NO
。
【输入样例】
a A bb BB ccc CCC
Aa BBbb CCCccc
【输出样例】
YES
【提示】
本评测系统基于linux,不支持函数strupr、strlwr
。
代码如下:
方法1:用函数将空格删除(只用于字符串)
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);//输入a和b
getline(cin,b);
for(int i=0;i<a.size();i++)
{
while(a[i]==' ')
{
a.erase(i,1);//删除空格
}
if(a[i]>='A'&&a[i]<='Z')
{
a[i]=a[i]-'A'+'a';//换成小写
}
}
for(int i=0;i<b.size();i++)
{
while(b[i]==' ')
{
b.erase(i,1);
}
if(b[i]>='A'&&b[i]<='Z')
{
b[i]=b[i]-'A'+'a';
}
}
if(a==b)//如果两个字符串相等,输出yes
{
cout<<"YES";
}
else
{
cout<<"NO";
}
return 0;
}
方法2:用字符串
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
int sum1=0,sum2=0;
getline(cin,a);//输入a,b
getline(cin,b);
for(int i=0;i<a.size();i++)
{
if(a[i]==' ')continue;//如果是空格跳过
if(a[i]>='A'&&a[i]<='Z')
{
a[i]+=32;//转换小写
}
sum1+=a[i];
}
for(int i=0;i<b.size();i++)
{
if(b[i]==' ')continue;
if(b[i]>='A'&&b[i]<='Z')
{
b[i]+=32;
}
sum2+=b[i];
}
if(sum1==sum2)cout<<"YES";
else cout<<"NO";
return 0;
}
方法3:用字符数组
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[10000],b[10000];
int sum1=0,sum2=0;
cin.getline(a,10000);//输入a,b
cin.getline(b,10000);
for(int i=0;i<strlen(a);i++)
{
if(a[i]==' ')continue;//如果是空格就跳过本次循环
if(a[i]>='A'&&a[i]<='Z')
{
a[i]+=32;//转换小写
}
sum1+=a[i];
}
for(int i=0;i<strlen(b);i++)
{
if(b[i]==' ')continue;
if(b[i]>='A'&&b[i]<='Z')
{
b[i]+=32;
}
sum2+=b[i];
}
if(sum1==sum2)cout<<"YES";
else cout<<"NO";
return 0;
}
再见,记得三连哦!!!