每天一题LeetCode【第11天】

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 来判断是否是前缀串

你可能感兴趣的:(每天一题LeetCode【第11天】)