7-7 刪除字串中的子串(15 分) 字串的應用
阿新 • • 發佈:2018-12-13
題目描述:
substr(i, x)從字串的第 i 號下標開始,向後面擷取 x 位,並且可以賦值給一個新的字串 erase(i, x) 從下標i 開始,向後刪除 x 位 AcCode:
7-7 刪除字串中的子串(15 分)
輸入2個字串S1和S2,要求刪除字串S1中出現的所有子串S2,即結果字串中不能包含S2。
輸入格式:
輸入在2行中分別給出不超過80個字元長度的、以回車結束的2個非空字串,對應S1和S2。
輸出格式:
在一行中輸出刪除字串S1中出現的所有子串S2後的結果字串。
輸入樣例:
Tomcat is a male ccatat
cat
輸出樣例:
Tom is a male
賽後分析:字串模擬,但是比賽的時候並沒有做出來,對於字串題目的掌握還是不夠好,賽後看了看題解,在比賽的時候想到用string中的substr來做了,但是忘記這個函式的用法了,C語言庫函式裡面也有許多可以用的函式,但是大一C語言學的並不好,出來混,總是要還的...
題目分析:
substr(i, x)從字串的第 i 號下標開始,向後面擷取 x 位,並且可以賦值給一個新的字串 erase(i, x) 從下標i 開始,向後刪除 x 位 AcCode:
#include<bits/stdc++.h> using namespace std; int main() { char str1[100]; char str2[100]; gets(str1); gets(str2); int len1 = strlen(str1); int len2 = strlen(str2); string s1, s2; for(int i = 0; i < len1; i++) s1 += str1[i]; for(int i = 0; i < len2; i++) s2 += str2[i]; while(1){ bool flag = false; for(int i = 0; i < s1.size(); i++){ string s = s1.substr(i, s2.size()); if(s == s2) {flag = true; s1.erase(i, s2.size());} } if(!flag) break; } cout << s1 << endl; return 0; }