A24174. 字符串判等
填空题
中等
知识点
题目描述
字符串判等
题目描述
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
输入
两行,每行包含一个字符串。
输出
若两个字符串相等,输出YES,否则输出NO。
输入样例
a A bb BB ccc CCC
Aa BBbb CCCccc输出样例
YES参考答案
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s1[105], s2[105];
int l1, l2, i, i1 , i2;//i1, i2:s1与s2转化为新字符串过程中填充字符串时用的下标
cin.getline(s1, 105);//读入带空格的字符串
cin.getline(s2, 105);
l1 = strlen(s1);
l2 = strlen(s2);
for(i = 0, i1 = 0; i < l1; ++i)//把字符串s1转为只有小写字母无空格的字符串
{
if(s1[i] >= 'a' && s1[i] <= 'z')
s1[i1++] = s1[i];
else if(s1[i] >= 'A' && s1[i] <= 'Z')
s1[i1++] = s1[i] + 32;
}
s1[i1] = '\0';
for(i = 0, i2 = 0; i < l2; ++i)//把字符串s2转为只有小写字母无空格的字符串
{
if(s2[i] >= 'a' && s2[i] <= 'z')
s2[i2++] = s2[i];
else if(s2[i] >= 'A' && s2[i] <= 'Z')
s2[i2++] = s2[i] + 32;
}
s2[i2] = '\0';
cout << (strcmp(s1,s2) == 0 ? "YES" : "NO");
return 0;
}答案解析
#include<bits/stdc++.h>
using namespace std;
string toNewStr(string s)//将s转化为只由小写字母组成的字符串
{
string r;
for(int i = 0; i < s.length(); ++i)
{
if(s[i] >= 'a' && s[i] <= 'z')
r.push_back(s[i]);
else if(s[i] >= 'A' && s[i] <= 'Z')
r.push_back(s[i] + 32);
}
return r;
}
int main()
{
string s1, s2, ns1, ns2;
getline(cin, s1);//读入带空格的字符串
getline(cin, s2);
ns1 = toNewStr(s1);//生成新字符串
ns2 = toNewStr(s2);
cout << (ns1 == ns2 ? "YES" : "NO");
return 0;
}
上一题
下一题