1. 程式人生 > 其它 >pta L1-059 敲笨鍾

pta L1-059 敲笨鍾

相當難搞的模擬題,雖然在一定是簡單字串模擬題,但是處理起來也是有些棘手的;

題目思路:按照題目要求模擬,需要注意的是,如何處理“ong"所在的字串,即找到','與’.'所在的位置,往前推進,如果滿足這些條件

則在從末尾尋找三個空格之前的地方,從頭輸出之後,在輸出” qiao ben zhong“,注意,要多輸出一個空格,因為找到第三個空格就停止了,所以要把那個空格補上;

如不滿足條件,就按照題目要求輸出即可,

細節很多,乾貨滿滿,應該好好把握這類字串模擬題;

Talk is cheap. Show me the code.

 1 #include<bits/stdc++.h>
 2
using namespace std; 3 int main() 4 { 5 int n; 6 cin >> n; 7 getchar();//高手和菜雞的區別就是識別空格--zju chenyue 8 for (register int i = 1; i <= n; i++) 9 { 10 string s=""; 11 int flag=0;//統計滿足條件否 12 getline(cin, s);//輸入 13 for (register int j = 0; j < s.length(); j++)
14 { 15 if (s[j]==',')//','找到','往前推進 16 { 17 if (s[j-1]=='g') 18 if (s[j-2]=='n') 19 if (s[j-3]=='o') 20 flag++; 21 } 22 if (s[j] == '.')//同上 23 { 24 if (s[j-1
]=='g') 25 if (s[j-2]=='n') 26 if (s[j-3]=='o') 27 flag++; 28 } 29 } 30 if (flag==2)//滿足條件 31 { 32 int cnt=0; 33 int k=0; 34 for ( k = s.length() - 1; k >= 0; k--)//往前推進三個空格 35 { 36 if (s[k] == ' ') 37 cnt++; 38 if (cnt == 3)//終止 39 break; 40 } 41 for (register int l = 0; l < k; l++)//從頭開始輸出 42 { 43 cout << s[l]; 44 } 45 cout << " qiao ben zhong."; 46 } 47 else 48 cout << "Skipped"; 49 if(i<n)//格式控制 50 cout<<endl; 51 } 52 return 0; 53 }