leetcode 0014
说明
只是为了记录一下,不求多快,也不深究。
会简要描述思路,代码中不写注释。
如碰到不会做的用了别人代码会在博客中标出。
题目描述
结果
思路
第一遍提交击败37%的用户,一模一样的代码又提交了一遍,击败82%的用户。所以这个到底有啥意义。。。
数组长度为0或1直接return。
写一个方法判断所有字符串第num个字符是否相同。
找到数组里最短的字符串,以他的所有索引来遍历数组,直到第i个位置字符不相同。
代码
class Solution {
public boolean chIsSame(String[] strs,int num) {
char ch = strs[0].charAt(num);
for(int i = 1;i<strs.length;i++) {
if(strs[i].charAt(num)!=ch) {
return false;
}
}
return true;
}
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0) {
return "";
}
if(strs.length == 1) {
return strs[0];
}
int shortestLen = strs[0].length();
for(int i = 1;i<strs.length;++i) {
if(strs[i].length()<shortestLen) {
shortestLen = strs[i].length();
}
}
if(shortestLen == 0) {
return "";
}
for(int i = 0;i<shortestLen;++i) {
if(!chIsSame(strs, i)) {
return strs[0].substring(0, i);
}
}
return strs[0].substring(0,shortestLen);
}
}