用了很麻烦的方法 终于AC
这题有个坑 古诗词 诗是对称的 两句话一般长 词不一定 我这里开始直接‘/2-1’ 定位的上半句的结尾 只得了12分 后来改成用s.find()定位‘,’所在位置就ac了
写完了我才想起来 我为啥要做的这么麻烦 直接getline一行s.find()逗号和句号的位置 然后判断前三位是不是ong 然后从后往前找空格 找三个停下来输出之前的全部 后面替换成敲笨钟就是了???
AC代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
int main()
{
cin >> n;
getchar();
for (int i = 0; i < n; i++)
{
string str,s1,s[10001];
int flag = 0;
int a = 0;
getline(cin, str);
stringstream input(str);
while(input>>s1)
{
s[a++] = s1;
}
int len = s[a - 1].length();
int w;
for (int j = 0; j < a;j++)
{
if(s[j].find(',')!=-1)
{
w = j;
break;
}
}
int len1 = s[w].length();
if (s[a - 1][len - 2] == 'g' && s[a - 1][len - 3] == 'n' && s[a - 1][len - 4] == 'o' && s[w][len1 - 2] == 'g' && s[w][len1 - 3] == 'n' && s[w][len1 - 4] == 'o')
{
flag = 1;
for (int j = 0; j < a-3;j++)
{
cout << s[j] << " ";
}
cout << "qiao ben zhong.\n";
}
if(!flag)
cout << "Skipped\n";
}
return 0;
}