前言
本文将结合具体题目,深化对于字符串算法的掌握运用。
第一章:最长公共前缀
1.1 题目描述
现给出字符串数组,要求返回所有字符串的最长公共前缀。
1.2 思路讲解
解法一(两两比较): 我们可以先找出前两个的最长公共前缀,然后拿这个最长公共前缀依次与后面的字符串比较,这样就可以找出所有字符串的最长公共前缀。
解法二(统一比较): 题目要求多个字符串的公共前缀,我们可以逐位比较这些字符串,哪一位出现了不同,就在哪一位截止。
1.3 代码实现
两两比较代码示例:
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 longestCommonPrefix(vector<string>& strs) {
// 所有字符串一起 逐个比较
string ret = strs[];
( i = ; i < ret.(); i++) {
temp = strs[][i];
( j = ; j < strs.(); j++) {
(i == strs[j].() || temp != strs[j][i]) {
ret.(, i);
}
}
}
ret;
}
};


