Write a function to find the longest common prefix string amongst an array of strings.
找出字符串数组的最长共同前缀。
比如:
"abcdefg"
"abcdefghijk"
"abcdfghijk"
"abcef"
上面的字符串数组的最长公共前缀就是"abc"。
class Solution {
public String longestCommonPrefix(String[] strs) {
String res ="";
int n = strs.length;
if(n == 0) return res;
int minLen = strs[0].length();
for(int i = 1; i<n ;i++){
minLen = Math.min(minLen, strs[i].length());
}
for(int j= 0; j<minLen ; j++){
for(int k =1; k<n; k++){
if(strs[k-1].charAt(j) != strs[k].charAt(j)) return res;
}
res = res + strs[0].charAt(j);
}
return res;
}
}
solution里的优秀解更短:
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) return "";
String res = strs[0];
for (int i = 1; i < strs.length; i++) {
while (!strs[i].startsWith(res)) res = res.substring(0, res.length() - 1);
}
return res;
}
}
这里的strs.startsWith方法:
startsWith是String类中的一个方法,用来检测某字符串是否以另一个字符串开始,返回值为boolean类型如:
String a = "abcd";
String p = "abc";
Boolean b = a.startsWith(p);则b就为true.
如果p的值为“”空字符串,(即a.startsWith(""),)则也是返回true。