问题描述:
(题目:https://nanti.jisuanke.com/t/T1115)
问题概述:
判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。
输入格式
两行,每行包含一个字符串;字符串长度不超过 100100。
输出格式
若两个字符串相等,输出"YES"
,否则输出"NO"
。
输出时每行末尾的多余空格,不影响答案正确性
样例输入复制
a A bb BB ccc CCC
Aa BBbb CCCccc
样例输出复制
YES
代码:
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//删除空格操作
string deletespace(string s) { //删除空格
int len = s.size();
int p = 0;
string m;
for (int i = 0; i < len; i++) {
if (s[i] == ' ' || s[i] == '\0') {
continue;
}
else {
m += s[i]; //字符串操作
//也可以是m=s[i];
p++;
}
// m = " ";
}
return m;
}
int main() {
string s1, s2; //输入俩个字符串
//cin >> s1 >> s2;
getline(cin, s1);
getline(cin, s2);
int len1 = s1.size(); //字符串1的长度
int len2 = s2.size(); //字符串2的长度
int len3 = min(len1, len2);//俩个字符串最小长度
int len4 = max(len1, len2);//俩个字符串最大长度
//先全部转换成大写字母(小写字母也可以)
for (int i = 0; i < len1; i++) {
if (s1[i] >= 'a' && s1[i] <= 'z') {
s1[i] = s1[i] - 32;
}
else {
s1[i] = s1[i];
}
}
for (int i = 0; i < len2; i++) {
if (s2[i] >= 'a' && s2[i] <= 'z') {
s2[i] = s2[i] - 32;
}
else {
s2[i] = s2[i];
}
}
s1 = deletespace(s1);
s2 = deletespace(s2);
for (int i = 0; i < len3; i++) {
if (s1[i] == s2[i]) {
cout << "YES" << endl;
break;
}
else {
cout << "NO" << endl;
break;
}
}
return 0;
}