前言
本文将结合具体题目,进一步深化对于字符串算法的掌握运用。
第一章:最长公共前缀
1.1 题目链接
1.2 题目分析
现给出字符串数组,要求返回所有字符串的最长公共前缀。
1.3 思路讲解
解法一(两两比较): 我们可以先找出前两个的最长公共前缀,然后拿这个最长公共前缀依次与后面的字符串比较,这样就可以找出所有字符串的最长公共前缀。
解法二(统一比较): 题目要求多个字符串的公共前缀,我们可以逐位比较这些字符串,哪一位出现了不同,就在哪一位截止。
1.4 代码实现
两两比较代码示例:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
// 解法一:两两比较
string ret = strs[0];
for(int i = 1; i < strs.size(); i++)
ret = findCommon(ret, strs[i]);
return ret;
}
string findCommon(string& s1, string& s2){
int i = 0;
while(i < min(s1.size(), s2.size()) && s1[i] == s2[i]) i++;
return s1.substr(0, i);
}
};
统一比较代码示例:
class Solution {
public:
string {
string ret=strs[];
( i=;i<ret.();i++){
temp=strs[][i];
( j=;j<strs.();j++){
(i==strs[j].()||temp!=strs[j][i]){
ret.(,i);
}
}
}
ret;
}
};


