题解 | #最长公共前缀#
最长公共前缀
http://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47
解题思路:
- 判断极端情况,strs==null || strs=="",直接返回""
- 直接用strs中的第一个字符串作为参照即可,循环比对剩余字符串每个字符,相等即加入定义的前缀字符串,因为公共前缀就是每个字符串前缀中相等的字符构成的。
- 如果比较到第一个字符的索引i等于后面某个字符串的长度了,就表示最少有一个字符串不满足了,后面就不用比较了,或者是比较到某个字符串的第i个字符和第一个字符串第i个字符不相等,也不用比较了,直接返回即可。
Java AC code:
import java.util.*;
public class Solution {
/**
*
* @param strs string字符串一维数组
* @return string字符串
*/
public String longestCommonPrefix (String[] strs) {
// write code here
if (strs == null || strs.length == 0) return "";
StringBuilder sb = new StringBuilder();
int l = strs.length;
for(int i = 0; i < strs[0].length(); i++) {
for(int j = 1; j < l; j++) {
if (i == strs[j].length() || strs[0].charAt(i) != strs[j].charAt(i)) {
return sb.toString();
}
}
sb.append(strs[0].charAt(i));
}
return sb.toString();
}
}