14. 最长公共前缀
横向扫描
+=拼接字符串的性能要低于substring,用了一个substring直接从8ms降到了1ms
class Solution {
public String longestCommonPrefix(String[] strs) {
//最长公共前缀长度
int length = strs[0].length();
int size = strs.length;
String first_word = strs[0];
int num = 0;
//利用第一个单词和后面的单词做前缀对比
for(int i = 1; i < size; i++){
if(length == 0) break;
for(int j = 0; j < Integer.min(strs[i].length(),first_word.length()); j++){
if(strs[i].charAt(j) == first_word.charAt(j))
num++;
else break;
}
length = Integer.min(length,num);
num = 0;
}
return first_word.substring(0,length);
}
}
纵向扫描
class Solution {
public String longestCommonPrefix(String[] strs) {
int number = strs.length;
int pre_num = 0;
for(int i = 0; i < strs[0].length(); i++){
for(int j = 0; j < number; j++){
if(i >= strs[j].length() || strs[j].charAt(i) != strs[0].charAt(i))
return strs[0].substring(0,pre_num);
}
pre_num++;
}
return strs[0].substring(0,pre_num);
}
}
浙公网安备 33010602011771号