leetcode第十四题(easy)——Longest Common Prefix

来源:互联网 发布:linux cp命令 时间 编辑:程序博客网 时间:2024/04/28 07:15

题目描述如下:

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

一开始搞错了题目的意思,以为是两两字符串相比较,求出最大长度前缀,结果是所有的字符串相比,求出共同的最大长度前缀。


如何来取得两个字符串的最长前缀呢?

刚开始是通过这种方法来获得,str1.startsWith(str2.substring(0,k)),通过循环k来获得。

后来网上参考了一下别人的思路,又得到了一种特别的求法:

<span style="white-space:pre"></span>for(k=0;k<len;k++){                if(prefix.charAt(k)!=strs[i].charAt(k)){                    break;                }            }            prefix=strs[i].substring(0,k);


此题思路如下:

首先得考虑特殊情况:当字符串数组strs中没字符串,即length=0时,最大前缀为“”;当字符串数组strs中有空串“”时,最大前缀也为“”。

然后是正常情况:先将数组第一个元素置为最长前缀prefix,随后与剩下的每个元素一一比较,因为2个字符串的最长公共前缀,其长度肯定不会超过最短的字符串的长度,所以取长度短的作为len。最后取得的作为prefix

public class Solution {    public String longestCommonPrefix(String[] strs) {        if(strs.length==0){            return "";        }        String prefix=strs[0];        for(int i=1;i<strs.length;i++){            if(prefix==""||strs[i]==""){                return "";            }            int len = prefix.length()>strs[i].length()?strs[i].length():prefix.length();            int k;            for(k=0;k<len;k++){                if(prefix.charAt(k)!=strs[i].charAt(k)){                    break;                }                            }            prefix=strs[i].substring(0,k);                    }        return prefix;    }}

0 0
原创粉丝点击