7-118 敲笨钟 (20分)****未解****

第一次代码构思(错误)

一开始想的是既满足’,‘前面的满足ong,还满足’.‘前面是ong的就是了。
但是忽略了一点:s[j]不可能同时是’,’ ‘.’ 这是矛盾的

#include <iostream>
using namespace std;
 
int main()
{
	int n;cin>>n;
	string s;
	getchar();
	for(int i=0;i<n;i++){
		getline(cin,s);
		for(int j=0;j<s.size();j++){
			if(s[j]==', '&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
				if(s[j]=='.'&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
					;
				}
				else{
					cout<<"Skipped";
				}
			}
		} 
	} 	
    return 0;
}

第二次代码()

把 逗号 和 句号 分开 判断
用一个flag变量来判断
用 f 回溯到倒数第4个词的结尾

#include <iostream>
using namespace std;
 
int main()
{
	int n,flag;cin>>n;
	string s;
	getchar();
	for(int i=0;i<n;i++){
		getline(cin,s);
		flag=0;
		for(int j=0;j<s.size();j++){
			if(s[j]==', '&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
				flag=1;
			}
			if(flag==1&&s[j]=='.'&&s[j-1]=='g'&&s[j-2]=='n'&&s[j-3]=='o'){
				flag=2;
//			}
//			if(flag==2){
				int f = j;   //用 f 回溯到倒数第4个词的结尾 
				for(int kong=0;kong<3;f--){
					if(s[f]==' ') kong++;
				}
				s.replace(f+1,j-f," qiao ben zhong."); //起始位置,长度,替换的内容
				cout<<s<<endl;
				return 0; 
			}
		} 
	} 
	if(flag!=2)cout<<"Skipped"<<endl;
	return 0;
}
发布了150 篇原创文章 · 获赞 7 · 访问量 9009
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览