題目描述
“總之就是不太可愛!”
TC學長對字串很有研究,在他看來有些字符顯然不太可愛,某天有幾個可愛的女生拿著自己的c語言程式來向TC請教,這時TC注意到程式里的有些變數名中有不太可愛的成分,可是他現在要專心寫數學題,于是請你來撰寫程式幫他找出不可愛的部分,
輸入
輸入的第一行由若干個不同的字符組成,這些字符都被認為是不可愛的字符,
第二行開始多組輸入,每組輸入為一行,每行都有一個字串,代表待判斷的變數名,
保證每次輸入中字串的個數不超過100個,變數名長度不超過10000,保證資料中的變數名格式滿足c程式標準
輸出
每一個變數名對應一行輸出,如果這個變數名存在不可愛的字符,則輸出洗掉不可愛字符后的新變數名,如果不存在不可愛的字符,則輸出"That’s so cute!"
樣例輸入
abd
abcdefg
niconiconi
樣例輸出
cefg
That’s so cute!
這題我先給出一個我第一次做錯的代碼,考慮欠缺了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<numeric>
#include<set>
#include<map>
#define ll long long
using namespace std;
int main()
{
string t,s;
int i,j,flag;
getline(cin,t);
while(cin>>s)
{
flag=0;
for(i=0;i<t.size();i++)
{
if(s.find(t[i])<s.size())
{
flag=1;
for(j=s.find(t[i]);j<s.size();j++)
if(s[j]==t[i])
s.erase(j,1);
}
}
if(flag)cout<<s<<endl;
else cout<<"That's so cute!"<<endl;
}
}
for(j=s.find(t[i]);j<s.size();j++)
if(s[j]==t[i])
s.erase(j,1);
這里可以發現,如果發現了不可愛的字符,洗掉后再j++就會跳過一次字符的判斷,最后的答案肯定是不能完全ac的
正確代碼如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<numeric>
#include<set>
#include<map>
#define ll long long
using namespace std;
int main()
{
string t,s;
int i,j,len;
getline(cin,t);
while(cin>>s)
{
len=s.size();
for(i=0;i<t.size();i++)
for(j=0;j<s.size();)
if(t[i]==s[j])
s.erase(j,1);
else
j++;
if(len!=s.size())cout<<s<<endl;
else cout<<"That's so cute!"<<endl;
}
}
判斷的條件改變,但是性質一樣,第一個給的代碼是用了一個標志位,第二個代碼是直接判斷s.size()的長度是否還等于初始s的長度,
成為優秀程式員還是得做到思維嚴謹,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277508.html
標籤:其他
上一篇:C語言-語法規范集- (生院版)
