解题思路:
这题不要想着在输入的原字符串上删除或者修改,麻烦还容易出错。推荐存入新字符串再判断,思路简单且清晰
注意事项:
题目只要求过滤空格,这里调用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;

}


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论