题目描述
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
输入格式
两行,每行包含一个字符串;字符串长度不超过 100。
输出格式
若两个字符串相等,输出"YES",否则输出"NO"。
Sample Input
a A bb BB ccc CCC
Aa BBbb CCCccc
Sample Output
YES
思路
题意很清楚了:判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
我们可以一个字符一个字符的读取,如果是空格就不管,如果是回车就说明该行读取结束。另外,如果是字母就全部将其转化为小写字母,最后再进行比较。
C++代码1:
#include<iostream>
using namespace std;
string a, b;
char c;
int main()
{
while(c = getchar())//对第一个字符串进行处理
{
if(c == '\n') break;
if(c == ' ') continue;
if(c >= 'A' && c <= 'Z') c += 32;
a.push_back(c);
}
while(c = getchar())//对第二个字符串进行处理
{
if(c == '\n') break;
if(c == ' ') continue;
if(c >= 'A' && c <= 'Z') c += 32;
b.push_back(c);
}
if(a == b) cout << "YES" << '\n';
else cout << "NO" << '\n';
return 0;
}
C++代码2:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char str1[205], str2[205];
memset(str1, 0, sizeof(str1));
memset(str2, 0, sizeof(str2));
gets(str1);
gets(str2);
int len1 = strlen(str1), len2 = strlen(str2);
for(int i = 0; i < len1; i++)
if(str1[i] >= 97 && str1[i] <= 122) str1[i] -= 32;
for(int i = 0; i < len2; i++)
if(str2[i] >= 97 && str2[i] <= 122) str2[i] -= 32;
int flag = 1, len = max(len1, len2);
for(int i = 0, j = 0; i < len; i++, j++)
{
while(str1[i] != str2[j])
{
if(str1[i] == ' ') i++;
else if(str2[j] == ' ') j++;
else
{
flag = 0;
break;
}
}
if(flag == 0) break;
}
if(flag) cout << "YES" << endl;
else cout << "NO" << endl;
return 0;
}