本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

` (strs[i].indexOf(prefix) != 0) ` 在找到 LongestCommonPrefix

发布于2021-07-15 03:26     阅读(289)     评论(0)     点赞(16)     收藏(2)


我阅读了 LongestCommonPrefix 这样的解决方案

最长公共前缀 - LeetCode

在此处输入图片说明

 public String longestCommonPrefix(String[] strs) {
    if (strs.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.isEmpty()) return "";
        }        
    return prefix;
}

至于while (strs[i].indexOf(prefix) != 0),如果prefix不为空,则表达式会不断返回True;

怎么能得出结论prefix = prefix.substring(0, prefix.length() - 1);,我认为while (strs[i].indexOf(prefix) != 0)什么都没做。


解决方案


该算法的思想是:

  1. 首先假设第一个单词是prefix,然后我们将检查是否prefix是所有其他单词的前缀。

  2. ifstrs[i].indexOf(prefix) != 0表示它不是以prefix. 所以我们应该把前缀减少一点(去掉最后一个字符),即:prefix = prefix.substring(0, prefix.length() - 1);

  3. 我们不断地这样做,使用所有检查过的单词,或者前缀被剪切为''(这就是为什么它被称为Horizontal scanning

希望能帮到你,还有什么问题可以评论。:)



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/246835/270b2ac1944c98609526/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

16 0
收藏该文
已收藏

评论内容:(最多支持255个字符)