【发布时间】:2018-12-08 17:30:19
【问题描述】:
class Solution {
public String longestCommonPrefix(String[] strs) {
String result = new String("");
char compareElement;
int i;//index of strs
int j;//index of the first one of string
for(j = 0; j < strs[0].length(); j++){
compareElement = strs[0].charAt(j);
for(i = 1; i < strs.length; i++){
if(compareElement == strs[i].charAt(j)){
if(i == strs.length - 1)
result += compareElement;
else
continue;
}
else{
break;
}
}
}
return result;
}
}
测试样本是
Input: ["flower","flow","flight"]
Output: "fl"
嗨,我在 Leetcode 的第四个小程序中遇到了 Java 中的字符串问题。此函数的目的是在字符串数组中找到最长的公共前缀字符串。但例外
Exception in thread "main"
java.lang.StringIndexOutOfBoundsException: String index out of
range: 4
at java.lang.String.charAt(String.java:614)
at Solution.longestCommonPrefix(Solution.java:11)
at __DriverSolution__.__helper__(__Driver__.java:4)
再次出现。 有人知道吗?谢谢!
【问题讨论】:
-
一个建议:将
j用于外部循环,将i用于内部循环,这违反了正常约定,并且会导致任何阅读您的代码的人感到困惑。通常循环从外部的i开始,然后是j、k(如果你超过k,你可能做错了;-)。实际问题是您的第二个字符串的字符数少于第一个字符串,因此当您在第二个字符串中查找字符 4 时,它不存在。