解题思路:
这题不要想着在输入的原字符串上删除或者修改,麻烦还容易出错。推荐存入新字符串再判断,思路简单且清晰
注意事项:
题目只要求过滤空格,这里调用isspace()会把制表符也一并过滤,但是不影响结果,若仅过滤空格,可单独判断
参考代码:
#include <iostream>
#include <string>
using namespace std;
//定义比较函数,读取两个字符串,判断剔除空格并忽略大小写后是否相等,返回YES或者NO
string compare(const string& str1,const string& str2) {
string temp1, temp2; //定义两个临时字符串
for(auto& ch:str1) { //遍历读取原字符串,忽略空格,并将转为小写后的字符存进临时字符串1
if(!isspace(ch))
temp1.push_back(tolower(ch));
}
for(auto& ch:str2) { //同上,存入临时字符串2
if(!isspace(ch))
temp2.push_back(tolower(ch));
}
return temp1 == temp2 ? "YES":"NO"; //此时的temp1和temp2存储的就是去除空格且转为小写的字符串,三元表达式直接判断是否相等并返回结果
}
int main() {
string str1,str2;
getline(cin,str1); //getline读取,可包含空格,遇到换行结束
getline(cin,str2);
cout << compare(str1,str2) << endl; //调用函数输出结果
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复