最长公共字符串后缀 语法基础 蓝桥杯 集训 字符串数组应用

代码

#include <iostream>
using namespace std;

const int N=200;

int n;
string str[N];
int main()
{
    while(cin>>n,n)
    {
        int len =1000; 
        //循环输入字符串找到长度最短的数组 
        for(int i=0;i<n;i++)//不能等于nn是空字符串 
        {
            cin>>str[i];
            if(str[i].size()<len)len=str[i].size();
        }
        //遍历除了第一个字符串以外的所有字符串的后缀是否和第一个字符串相等 
        while(len)//确定字符串的后缀长度  等于直接输出零 
        {
            bool success = true;
            for(int i = 1;i < n;i++)
            {
                bool is_name=true;
                for(int j = 1; j<=len ; j++)
                {
                    if(str[0][str[0].size()-j]!=str[i][str[i].size()-j])//S=s[0]S[0]等价于s[0][0];
                    {
                        is_name=false;
                        break;
                    }
                 } 
                 if(!is_name)//判断是否有不匹配的地方 
                 {
                     success=false;
                     break;
                 }
             } 
             if(success)
             {
                 break;
                     
              } 
              len--;
                
         } 
        cout<<str[0].substr(str[0].size()-len)<<endl;    
    }
    

    
    
    return 0;
 } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值