【字符串函数】PAT A1077 Kuchiguse (20分)

24 篇文章 0 订阅
23 篇文章 0 订阅

题目描述

找所有字符串的共同后缀

知识点

STL字符串string的使用

我的实现

码前思考

就一直比对就好

代码实现

#include <iostream>
#include <string>
using namespace std;

const int maxn = 1e2+10;
string ins[maxn];
int n;

int main(){
	scanf("%d\n",&n);
	int len;
	for(len=0;len<n;len++){
		getline(cin,ins[len]);
	}
	
	string res = ins[0];
	for(int i=1;i<len;i++){
		//cout<<ins[i]<<endl;
		int s1 = res.size();
		int s2 = ins[i].size();
		
		//从后往前比较
		int j;
		for(j=0;j<s1&&j<s2;j++){
			if(res[s1-1-j] != ins[i][s2-1-j]){
				break;//此时的j不可以! 
			}
		}
		
		if(j==0){
			cout<<"nai";
			return 0;
		}else{
			res = res.substr(s1-j); 			
		}
	}
	
	cout<<res;
	return 0;
}

码后反思

  1. 我一刷的时候没有做出来哦,一刷用的char数组,贼麻烦,二刷的时候已经会用STL了,所以就写出来了;
  2. 注意读取一行string,使用getline(cin,str),而且要注意先吸收前面的\n,否则会读入空串的。
  3. 柳神使用的是先反转字符串的思路,这是可以的!会好想一些。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值