LongestCommonPrefix (java)

Description

Write a function to find the longest common prefix string amongst an array of strings.

描述:找到一组字符串子数组中的最长公共前缀


像   LeetCode  Leetcode  Lee 这一组字符串的最长公共前缀就是Lee

思路:

先随便找一个作为暂时的公共前缀,即prefix ,当然一般就是数组中第一个字符串了,

然后用这个prefix一个一个跟字符后面的去匹配,就上面三个来说

prefix(初值为LeetCode) 与Leetcode,先找到他们两个的prefix,即Leet,

然后prefix值变为Leet,然后prefix继续与Lee匹配,prefix值更新为Lee,之后更多也是如此


接下来的问题就是如何找两个字符间的prefix

先说一下String 的 indexOf方法,

public int indexOf(String str)
Returns the index within this string of the first occurrence of the specified substring.
If no such value of k exists, then -1 is returned

返回这个字符串中子一次出现这个子串的起始位置,不存在返回-1

利用这个函数就好解决了,每次prefix与下一个字符串比较,不在下一个字符串里面就去掉prefix最后一个字符,一直找到最大的prefix,在于下一个比较。需要注意的是prefix长度,如果中间prefix.length()==0,return"";即没有公共前缀。

附上代码:

class Solution {
    public String longestCommonPrefix(String[] strs) {
        
        if(strs.length == 0 || strs[0].length() == 0)
            return "";
        String prefix = strs[0];
        for(int i = 1; i < strs.length; i++)
        {
            while(strs[i].indexOf(prefix) != 0)
            {
                prefix = prefix.substring(0,prefix.length()-1);
                if(prefix.length()==0)
                    return "";
            }
        }
        
        return prefix;
    }
}

令   是 substring 方法  不是 subString (哇,找了好几遍才发现的一个bug)





你可能感兴趣的:(LeetCode)