简单实现,一个一个挨着往后比
python版本
class Solution:
def getPub(self, str1, str2):
j = 0
while j < min(len(str1), len(str2)):
if str1[j] != str2[j]:
break;
j+=1
return str1[:j]
def longestCommonPrefix(self , strs: List[str]) -> str:
# write code here
if len(strs) == 0:
return ''
pub_str = strs[0]
if len(strs) == 1:
return pub_str
for i in range(1, len(strs)):
if not len(pub_str):
return pub_str
pub_str = self.getPub(pub_str, strs[i])
return pub_str
c++版本
class Solution {
public:
/**
*
* @param strs string字符串vector
* @return string字符串
*/
string longestCommonPrefix(vector<string>& strs) {
// write code here
int i, j, s_size = strs.size();
string pub_str=""; //初始化公共字符串
if(!s_size) return pub_str; //如果strs为空,直接return
pub_str = strs[0]; //如果不为空,将第一个字符串赋给pub_str
if(s_size == 1) return pub_str; //如果就一个字符串,直接返回
for(i=1; i<s_size; i++){ //如果不止一个,从第一个开始挨着往后比
int min_len = min(pub_str.size(), strs[i].size()); //比较两个字符串哪个短,按照短的长度去循环
for(j=0; j<min_len; j++){
if(pub_str[j] != strs[i][j]) break; //出现不等的直接退出
}
pub_str = pub_str.substr(0, j);
}
return pub_str;
}
};