一、问题描述

给定一个vector<string>,求出vector中所有字符串的最大公共前缀

例子:

vector<string> v;
v.push_back("124d22e2");
v.push_back("124d2fw");
v.push_back("124d2ggg");
cout << longestCommonPrefix(v) << endl;

对于以上v,输出结果为”124d2″

二、解决思想

  令result等于第一个字符串,拿result和后面的所有字符串比较,将result截取为result和字符串相同的前缀部分,便利一遍,即可得到结果。

三、实现代码

string longestCommonPrefix(vector<string>& strs) {
	if (strs.empty())
		return "";
	string result = strs.at(0);
	if (result == "")
		return "";
	for (int i = 1; i < strs.size(); i++) {
		int j = 0;
		string str = strs.at(i);
		while (j < result.size() && j < str.size() && result.at(j) == str.at(j))
			j++;
		result = str.substr(0,j);
	}
	return result;
}

测试代码

int main()
{
	vector<string> v;
	v.push_back("124d22e2");
	v.push_back("124d2fw");
	v.push_back("124d2ggg");
	cout << longestCommonPrefix(v) << endl;

	system("pause");
    return 0;
}

  

版权声明:本文为likaiming原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.cnblogs.com/likaiming/p/8057018.html