题目:
我的思路:我们遍历整个数组,以第一个元素的字符串为基准,每一次都对比所有字符串中的第 i 个字符与第一个元素的第i个字符是否相等,如果相等,就把整个字符拼接到结果中,如果不同,直接return即可。
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length<1){
String answ = "";
return answ;
}
StringBuilder result = new StringBuilder();
boolean isright = true;
for(int i = 0 ; i< strs.length;i++){
if(strs[i] ==""){
return strs[i];
}
}
for(int i = 0;i < strs[0].length();i++){
for(int j = 1; j< strs.length;j++){
if(i >= strs[j].length() ||strs[0].charAt(i) != strs[j].charAt(i)){
isright = false;
break;
}
}
if(isright){
result = result.append(strs[0].charAt(i));
}else {
break;
}
}
String ans = result.toString();
return ans;
}
时间复杂度:O(s)s为所有字符串的长度之和
空间复杂度:O(1)除了定义了一个字符串,没有多余空间占用。
LeetCode官方题解有4种解法:
官方四种