public class Longest
{
public static void main(String[] args)
{
String tc = "babad";
StringBuffer sb = new StringBuffer(tc.substring(0,tc.length()));
System.out.println(sb.toString().equals(sb.reverse().toString()));
//no exception
System.out.println(longestPalindrome(tc)); // throw exception
}
public String longestPalindrome(String s) {
if(s.length()<2)
return s;
int max = 0;
int beg = 0;
for(int i =0;i<s.length();i++)
{
for(int j = s.length();j>=0;j--)
{
if(isPalindrome(s,i,j) && j-i>max)
{
max = Math.max(j-i, max);
beg = i;
}
if(max == s.length())
return s;
}
}
return s.substring(beg, beg+max);
}
private static boolean isPalindrome(String s,int left, int right)
{
StringBuffer sb = new StringBuffer(s.substring(left, right));
return sb.toString().equals(sb.reverse().toString());
}
}
我的问题是为什么 eclipse 在调用 isPalindrome() 时抛出了 StringIndexOutOfBoundsException,但在 main() 中运行相同的代码时没有抛出该异常。