below is my code for Leetcode 9 Palindrome Number. It shows “String index out of range error” for line 8 when the testcase is 121. Can anyone tell me why this happened? Thanks!
class Solution { public boolean isPalindrome(int x) { String s = String.valueOf(x); int i = 0; int j = s.length()-1; while(i < j){ if(s.charAt(i) != s.charAt(j)){ <------ line 8 return false; }else{ s = s.substring(i+1,j); } }return true; } }
Advertisement
Answer
In the while loop, j remains constant whereas your “s” is reducing 1 char each loop. Example:
s = "theString"; i =0;j = 8; loop 1: s = "theString"; loop 2: s = "heString";
as you see, s.subString(0, 8) will return the above exception because “s” is only 7 characters.