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

标签 java

我看了LongestCommonPrefix这样的解决方案

Longest Common Prefix - LeetCode

enter image description here

 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. 如果 strs[i].indexOf(prefix) != 0 表示它不是以 prefix 开头。 所以我们应该减少一点前缀(删除最后一个 字符),即:prefix = prefix.substring(0, prefix.length() - 1);

  3. 我们不断地这样做,利用所有检查过的词,或者前缀有 被剪切成''(这就是它被称为水平扫描的原因)

希望对您有所帮助,如果您还有其他问题,请发表评论。 :)

关于java - ` (strs[i].indexOf(prefix) != 0) ` 在查找 LongestCommonPrefix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55586719/

相关文章:

java - 在父类(super class)构造函数中将 'this' 转换为子类

java - 如何将 printStackTrace 存储到字符串中

java - 如何在单词中间添加空格

java - Camel 归还 : How do I retry processing a message from a certain point back

java - Android 应用程序错误(Activity Main)

java - 寻求一些了解 simpleCursorAdapter 工作原理的见解

java - Maven Tycho 插件和 Eclipse Babel

java - 在服务器上存储一些数据以便无需数据库即可访问

Java OpenCV 在 inRange 之后将 HSV 转换回 BGR

java - Java I/O 流过滤器示例