Write a function to find the longest common prefix string amongst an array of strings.
题目链接:https://leetcode.com/problems/longest-common-prefix/
思路:
1.纵向扫描。从位置0开始,对每一个位置比较所有字符串,直到遇到一个不匹配。
代码:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty()) return "";
for(int idx = 0;idx<strs[0].size();++idx){// 纵向扫描
for(int i = 1;i<strs.size();++i){
if(strs[i][idx]!=strs[0][idx]) return strs[0].substr(0,idx);
}
}
return strs[0];
}
};
2.横向扫描。每个字符串与第0个字符串,从左到右比较,直到遇到一个不匹配。
然后继续下一个字符串。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty()) return "";
int right_most = strs[0].size()-1;
for(size_t i = 1;i<strs.size();++i){
//横向扫描
for(int j = 0;j<=right_most;j++){
if(strs[i][j]!=strs[0][j])
right_most = j-1;
}
}
return strs[0].substr(0,right_most+1);
}
};