字符串唯一前缀
题目描述
给定一组字符串,为每个字符串找出唯一能够识别该字符串的最小前缀。
输入
输入n串唯一的字符串,n为2到100之间,字符串用","隔开,字符串长度不超过100。
样例:
meituanapp,meituanwaimai,dianpingren,dianpingjieguo
输出
可以唯一区分字符串的最小前缀,用","隔开。
样例:
meituana,meituanw,dianpingr,dianpingj
解题思路
遇到该问题首先第一步当然是字符串分割了,c++并没有split()函数,因此需要自己构建一个split()函数用来分割字符串,并将子串分别放置到vector<string>中。之后对每个子串进行逐一匹配。
建立一个数组用来保存字符串与其他字符串的最大匹配元素个数,例如有四个字符串,第一个与第二、三、四个字符串进行逐字符比较,找出最大匹配的元素个数,存放到该数组中,之后第二个与第三、四个进行比较,如果匹配元素比数组中的值大则更新数组中的值,否则不改变数组中的值。
循环结束后,数组中的元素就代表其唯一标识的字符个数,并将每个字符标识输出即可。
程序源码
#include <iostream>
#include <vector>
#include <string>
using namespace std;
/*字符串分割函数*/
void split(const std::string& s, std::vector<std::string>& v,
const std::string& c)
{
std::string::size_type pos1, pos2;
pos2