【发布时间】:2022-11-22 05:22:42
【问题描述】:
我搜索了其他帖子,这个解决方案从未被讨论过,所以它不是重复的。我很难遵循这个解决方案。我知道我们设置了一个前缀,并循环遍历数组的其余部分并不断切割前缀直到前缀完全存在于每个字符串中但是为什么我们在 while 循环中执行 strs[i].indexOf(output) != 0?如果有人可以引导我完成此操作,我将不胜感激。
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0) {
return "";
}
String output = strs[0];
for(int i = 1; i < strs.length; i++) {
while(strs[i].indexOf(output) != 0) {
output = output.substring(0, output.length() - 1);
}
}
return output;
}
【问题讨论】:
-
这就是砍掉它的原因。它从
output的末尾一次一个地删除字符,直到strs[i].indexOf(output) != 0为false(strs[i]以output开头),然后它必须对每个字符串执行相同的操作以确保获取实际的公共前缀。您是否阅读过此处有关各种方法的文档?这似乎会被它涵盖。
标签: java