Skip to content
Advertisement

Why String index out of range?

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.

Advertisement