T14. Longest Common Prefix【Easy】
题目
写一个函数来查找字符串数组中最长的公共前缀字符串。
思路
首先要明白什么是最长的公共前缀字符串,举个例子吧:
input: ["13","12"] output: "1"
input: ["13","12","123"] output: "1"
input: ["13","12","23"] output: ""
input: ["1312","12","123"] output: "1"
这样应该容易理解吧~
代码中的思想是先把 str[0] 设为最长的公共前缀字符串 pre,通过 while 循环和 indexOf 来判断,不断把 pre 减短,最后返回pre。
具体可以看代码注释~
代码
代码取自 Top Solution,稍作注释
public String longestCommonPrefix(String[] strs) {
//若输入数组是null或为空,则返回""
if(strs == null || strs.length == 0) return "";
String pre = strs[0];
int i = 1;
//通过i++和while循环让遍历数组中每个串
while(i < strs.length){
//循环不断-1,(123->12这样),然后给pre直到pre串是strs[i]的前缀
while(strs[i].indexOf(pre) != 0)
pre = pre.substring(0,pre.length()-1);
i++;
}
return pre;
}
补充
补充一下indexOf()的知识:
例如字符串 :s.indexOf(a)
返回:在该 s 表示的字符序列中第一次出现 a 字符串的索引,如果未出现该字符,则返回 -1。
所以题目中用 strs[i].indexOf(pre) != 0 来判断是否是前缀串