6 / 6
Jan 2019

Hello smile

I have implemented the next palindrome program in Java. But the SPOJ submission system says there is a runtime error (NZEC). I am not able to resolve the issue.

class Palindrome
{
    private int reverse(int inputNumber)
    {
        int reversedNumber = 0;
        while(inputNumber > 0)
        {
            reversedNumber = reversedNumber * 10;
            reversedNumber += inputNumber%10;
            inputNumber = inputNumber/10;
        }
        return reversedNumber;
    }
    public int nextPalindrome(int inputNumber)
    {
        for(int i=inputNumber+1;;i++)
        {
            if(i == reverse(i))
                return i;
        }
    }
}
public class NextPalindrome {
    public static void main(String args[]) throws Exception
    {
        java.util.Scanner input = new java.util.Scanner(System.in);        
        Palindrome p = new Palindrome();
        int testcases = input.nextInt();
        for(int i=0;i<testcases;i++)
        {
            int number = input.nextInt();
            System.out.println(p.nextPalindrome(number));
        }
    }
}
  • created

    Mar '15
  • last reply

    Jan '19
  • 5

    replies

  • 1.3k

    views

  • 4

    users

What's the largest value that can fit in int?

3 years later

Facing the same issue although I am using Long instead of int:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Prob_3{

	public static void main(String args[]) throws NumberFormatException, IOException {
		
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
		int t = Integer.parseInt(br.readLine());
		
	
	while (t-- > 0) {
        Long n = Long.parseLong(br.readLine());
        boolean flag = false;
        while(flag== false){
            n++;
            flag = isPalindrome(n);
			}
			
}
}
	
	
	public static boolean isPalindrome(Long n){
		
	   String num = Long.toString(n);

	   
	   String tmp1= Long.toString(n%10);// last digit
	   String tmp2= Long.toString(n/10);// starting digits
	   String tmp3="";
	   
	   for(int i =tmp2.length()-1 ; i>=0 ; i--){
		   
		   tmp3+= tmp2.charAt(i);
		   
	   }
	   tmp1+=tmp3;

	   
	   if(tmp1.equals(num)) {
		   System.out.println(num);
		   return true;
	   }
	   
	   return false;
		   
	}
}

What’s the largest value that can fit in a long?

lol. good one.

So what answer do you get for this test case:

1
123456789012345678901234567890123456789012345678901234567890