2017, X Samara Regional Intercollegiate Programming Contest B.Pursuing the Happiness (string函式)
阿新 • • 發佈:2020-08-14
-
題意:給你一個字串,可以交換兩個字元的位置,問操作後能否在字串中找到子串\("happiness"\),如果不能,輸出交換的兩個位置.
-
題解:這題其實用string中的find函式很是方便啊,假如字串中不含子串,我們判斷一下交換\(1\)和\(2\)位置的字元後是否含有子串,如果有就直接交換\(1\)和\(3\),沒有當然就是\(1\)和\(2\)啦.在考慮有子串的情況,如果含有\(1\)個子串,就直接交換子串的第一個和第二個位置,如果含有兩個子串,就交換第一個子串的第一個位置和第二個子串的第二個位置即可,如果含有三個及以上的子串,就束手無策啦.具體還是看程式碼吧.
-
程式碼:
string s; int main() { ios::sync_with_stdio(false);cin.tie(0); cin>>s; string t="happiness"; int pos1=s.find(t); if(pos1==s.npos){ puts("YES"); swap(s[0],s[1]); if(s.find(t)==s.npos){ printf("1 2\n"); } else{ printf("1 3\n"); } } else{ int pos2=s.find(t,pos1+8); if(pos2!=s.npos){ int pos3=s.find(t,pos2+8); if(pos3!=s.npos){ puts("NO"); } else{ puts("YES"); printf("%d %d\n",pos1+1,pos2+2); }; } else{ puts("YES"); printf("%d %d\n",pos1+1,pos1+2); }; } return 0; }