【题目描述】
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
【输入】
两行,每行包含一个字符串。
【输出】
若两个字符串相等,输出YES
,否则输出NO
。
【输入样例】
a A bb BB ccc CCC
Aa BBbb CCCccc
【输出样例】
YES
代码:
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
int main()
{
string a;
string b;
char A[101],B[101];//char类型数组也可以保存字符串
getline(cin,a);//区分两个有空格的输入就用getline,意思是每一行为一个输入
getline(cin,b);
for(int i=0;i<=a.length();i++)//string类型的求长度是 a.length();char [] 类型的求长度是strleng(a);
{
if(a[i]>='a'&&a[i]<='z')
a[i]-=32;
}
for (int j=0;j<=b.length();j++)
{
if(b[j]>='a'&&b[j]<='z')
b[j]-=32;
}//所有字母大写化,易于比较
int s=0;
for(int x=0;x<=a.length();x++)
{
if(a[x]!=' ')
{
A[s]=a[x];
s++;
}
}
int r=0;
for(int y=0;y<=b.length();y++)
{
if(b[y]!=' ')
{
B[r]=b[y];
r++;
}
}//去掉空格
if(strcmp(A,B)==0) cout<<"YES";
else cout<<"NO";
return 0;
}
一:
因为有两个输入且输入字符串有空格,所以直接cin>>a>>b的话
如输入内容为:abc def,则a=abc,b=def;即是根据空格区分不同输入,
所以可以用getline方法区分有空格的不同输入,表示一行为一个输入,以回车作为输入的终止
getline(cin,a);a必须是字符串类型,不能是char[]数组类型;
二:字符串字母的大写小写变化
26个小写字母的ASCII码比相应大写字母的大32
字符串b字母大写化
for (int j=0;j<=b.length();j++)
{
if(b[j]>='a'&&b[j]<='z')
b[j]-=32;
}
字符串b字母小写化
for (int j=0;j<=b.length();j++)
{
if(b[j]>='A'&&b[j]<='Z')
b[j]+=32;
}
三:
char a[101]可以用于保存字符串,字符串按顺序一个一个填入数组中
char类型的求长度方法:strlen(a);
string a; 求长度方法:a.length();