最长公共字符串后缀

该C++代码实现了一个算法,输入n个字符串,找出它们的最短公共后缀。程序通过比较每个字符串的后缀直到找到最长的公共部分。
摘要由CSDN通过智能技术生成

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 200;
int n;
string str[N];

int main()
{
    int n;
    while(cin >> n,n)
    {
 
      int len=1000; 
      for(int i=0;i<n;i++)
      {
          cin >> str[i];//读入n个字符串
          if(len > str[i].size()) len=str[i].size();//求取n个字符串里面长度的最小值
      }
        while(len)//从len开始
        {
        bool success=true;
            //所有字符串后面len个字符是否相同
            for(int i=1;i<n;i++)//从第二个字符串开始
            {
                bool is_same=true;
                for(int j=1;j<=len;j++)
                {
                    if(str[0][str[0].size()-j]!=str[i][str[i].size()-j])
                    {
                        is_same = false;
                        break;
                    }
                }
                if(!is_same)
                    {
                    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、付费专栏及课程。

余额充值