字符串处理今天的是一个字符串匹配的问题:
题目007 最长字符后缀
思路分析:字符串从后面开始进行字符串的匹配,其中需要注意的是找出字符串的最小长度(这个可以理解为是一个小技巧),还要不断更新这个长度,原因是当出现不一样的字符时,也就是当前字符不匹配,那么说明当前len长度过长,需要更新len。代码如下:
#include <iostream>
#include <string>
using namespace std;
const int maxn = 210;
int n;
string str[maxn]; //定义的字符串数组
int main()
{
while(cin >> n, n)
{
int len = 1000;
for(int i = 0; i < n; i ++)
{
cin >> str[i];
if(len > str[i].size())
len = str[i].size(); // 最小长度寻找
}
while(len)
{
bool success = true; // 控制是否成功
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;
}