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

题目描述如下:

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值