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 }
本文来自博客园,作者:江上舟摇,转载请注明原文链接:https://www.cnblogs.com/LQS-blog/p/16159547.html