L1-011 A-B (20 分)
本題要求你計算A−B。不過麻煩的是,A和B都是字符串 —— 即從字符串A中把字符串B所包含的字符全刪掉,剩下的字符組成的就是字符串A−B。
輸入格式:
輸入在2行中先后給出字符串A和B。兩字符串的長度都不超過104,並且保證每個字符串都是由可見的ASCII碼和空白字符組成,最后以換行符結束。
輸出格式:
在一行中打印出A−B的結果字符串。
輸入樣例:
I love GPLT! It's a fun game!
aeiou
輸出樣例:
I lv GPLT! It's fn gm!
#include<iostream> #include<string> using namespace std; int main() { string stra, strb; getline(cin, stra); getline(cin, strb); int lena = stra.length(); int lenb = strb.length(); for (int i = 0; i < lena; i++) { for (int j = 0; j < lenb; j++) { if (stra[i] == strb[j]) { stra[i] = '~'; } } } for (int i = 0; i < lena; i++) { if (stra[i] == '~') i++; cout << stra[i]; } return 0; }
上面的代碼有兩個測試點過不了,分明結果是正確的Σ(`д′*ノ)ノ
后來看到其他大佬的代碼,發現可以使用字符的ASCII碼做判斷,當第二個出現相同ASCII碼的字符,就標記為1,輸出時用標記做判斷。