Java `(strs[i].indexOf(prefix)!=0)`在find LongestCommonPrefix中
我把这样的解决方案读到了最长的时间Java `(strs[i].indexOf(prefix)!=0)`在find LongestCommonPrefix中,java,Java,我把这样的解决方案读到了最长的时间 public String longestCommonPrefix(String[]strs){ 如果(strs.length==0)返回“”; 字符串前缀=strs[0]; 对于(int i=1;i
public String longestCommonPrefix(String[]strs){
如果(strs.length==0)返回“”;
字符串前缀=strs[0];
对于(int i=1;i
对于while(strs[i].indexOf(prefix)!=0)
,如果prefix
不为空,表达式将不断返回True
如何得出
prefix=prefix.substring(0,prefix.length()-1)的结论
,我假设,而(strs[I].indexOf(prefix)!=0)
什么都没做。这个算法的思想是:
前缀
,然后我们将进行检查
前缀是否是所有其他单词的前缀
strs[i].indexOf(前缀)!=0
表示它不是以前缀开头的。
因此,我们应该减少一点前缀(去掉最后一个)
字符),即:prefix=prefix.substring(0,prefix.length()-1)代码>
”
(这就是为什么它被称为水平扫描的原因)
希望这对您有所帮助,如果您还有其他问题,请发表评论。:) 此代码基本上从字符串列表中取出第一个字符串
String prefix = strs[0];
并从该字符串中删除最后一个字符
prefix = prefix.substring(0, prefix.length() - 1);
直到下一个字符串包含此子字符串
while (strs[i].indexOf(prefix) != 0)
对输入数组中的每个字符串重复此操作
for (int i = 1; i < strs.length; i++)
for(int i=1;i
如果算法已成功验证strs[i].indexOf(前缀)!=0
对于每个输入字符串,前缀
是最长的子字符串,但不是最长的公共前缀
正如您在注释中已经提到的,而不是检查
strs[i].indexOf(前缀)!=0
您应该使用strs[i].startsWith(prefix)
作为while循环的条件。通过这种方式,您应该得到通用的前缀“至于while(strs[i].indexOf(prefix)!=0),如果前缀不为空,表达式将不断返回True”-不会,因为前缀在循环体中更改,如果为空,代码将返回。我不知道你在问什么-你能澄清你的问题吗?哈哈,strs[I].indexOf(前缀)!=0
不是STR[i]。使用(前缀)
启动,节省阅读java文档的时间。抱歉,我没有详细解释。实际上它的意思是:如果前缀不在str中,它将返回-1,否则它将返回索引。所以如果strs[i].indexOf(前缀)!=0
,意思是index==-1
或index>0
,与startwith
正好相反,实际上java已经startwith
api,您可以尝试一下,我想它也可以工作。
for (int i = 1; i < strs.length; i++)