【字符串】Ybt_单词替换

题目大意

给你一段英文,以换行结束。
再给你两个单词,要你把那段英文中所有的那个单词都替换为下面那个单词。
区分大小写


简单的字符串函数使用。这里借助了s.erase(),s.find(),s.insert()。三个函数
(分别为清除、查找、插入)
注意输入…
在YbtOj测的90分。貌似是因为输入出bug了(?)
出bug代码

bug代码1getline(cin, s);
    cin >> s1 >> s2;
    s = " " + s + " ";
bug代码2:
    c = getchar();
    while (c != '\n') {
    
    
        s = s + c;
        c = getchar();
    }
    s = " " + s + " ";
    cin >> s1 >> s2;

【不解】。反正改成下面的就对了。


代码

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
string s, s1, s2;
char c;
int main() {
    
    
    c = getchar();
    while ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == ' ') {
    
    
        s = s + c;
        c = getchar();
    }
    s = " " + s + " ";  
    //前后加空格,便于分辨文段中所找到的字串是否是一个单词,而不是单词的一部分
    cin >> s1 >> s2;
    s1 = " " + s1 + " ";
    s2 = " " + s2 + " ";
    while (s.find(s1, 0) != string::npos) {
    
      //能找到
        int k = s.find(s1, 0);  //替换
        s.erase(k, s1.size());
        s.insert(k, s2);
    }
    cout << s.substr(1, s.size() - 1) << endl;  //去空格输出
}

猜你喜欢

转载自blog.csdn.net/qq_42937087/article/details/114991573