描述:给k个字符串,求出他们的最长公共前缀(LCP)
样例
在 “ABCD” “ABEF” 和 “ACEF” 中, LCP 为 “A”
在 “ABCDEFG”, “ABCEFG”, “ABCEFA” 中, LCP 为 “ABC”
新知识点:
vector<string> strs
既可以是一维的,也可以是多维的。在这里讲解三维的初始化。
vector<string> str;
str.push_back("ABCDEFG");
str.push_back("ABCEFG");
str.push_back("ABCEFA");
即建立了三维的容器{{ABCDEFG},{ABCEFG},{ABCEFA}}
2. strs[0].size()
//表示的是第一行的字符个数,即7.
3. strs.size()
//表示的是总共的行数,即3.
4. string str="qw"; str += 'a';//表示在字符串str后面加上字符a,即str现在等于qwa.
思路:可以将第二行开始的每行字符串和第一行的字符串进行逐个比较,当不相同时,即返回退出。
class Solution {
public:
/*
* @param strs: A list of strings
* @return: The longest common prefix
*/
string longestCommonPrefix(vector<string> strs) {
// write your code here
if(strs.size() == 0)//字符串为空时
return "";
string res = "";
for(int j = 0; j < strs[0].size(); j ++){//列数逐加
for(int k = 1; k < strs.size(); k ++){//行数从第一行开始逐加
if( strs[k][j] != strs[0][j]){//每一行和第一行的相同列数的字符进行比较,当不相同时,返回退出
return res;
}
}
res += strs[0][j];//当相同时,加上相同的字符
}
return res;
}
};