I've written the following code for the next palindrome problem but everytime i get time limit exceeded . Please help :
import java.io.*;
public class Main
{
Main()
{
try
{
int i,j,k,l,m = 0;
String st,str,str1;
StringBuffer buf;
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out, "UTF-8"));
l = Integer.parseInt(r.readLine());
for(k=0;k<l;k++)
{
m = 0;
st = r.readLine();
str = st;
str1 = st;
buf = new StringBuffer(st.substring(0,(st.length()/2)));
if((st.length()%2)==0)
{
str1 = st.substring(0,(st.length()/2)).concat(buf.reverse().toString());
}
else if((st.length()%2)!=0)
{
str1 = st.substring(0,(st.length()/2)+1).concat(buf.reverse().toString());
}
i = (st.length()/2)-1;
j = i+1;
if((st.length()%2)!=0)
{
j = i+2;
str = replaceCharAt(st,(st.length()/2),Character.forDigit((Character.digit(st.charAt(st.length()/2),10)+1)%10,10));
if(Character.digit(str.charAt(st.length()/2),10)!=0)
{
m++;
}
}
while(i>=0)
{
if(Character.digit(st.charAt(i),10)>Character.digit(st.charAt(j),10))
{
str = "";
break;
}
if(Character.digit(st.charAt(i),10)==Character.digit(st.charAt(j),10) && m==0)
{
str = replaceCharAt(str,i,Character.forDigit((Character.digit(st.charAt(i),10)+1)%10,10));
if(Character.digit(str.charAt(i),10)!=0)
{
m++;
}
}
if(Character.digit(st.charAt(i),10)<Character.digit(st.charAt(j),10))
{
if(m==0)
{
str = replaceCharAt(str,i,Character.forDigit((Character.digit(st.charAt(i),10)+1)%10,10));
}
st = str;
str = "";
break;
}
i--;
j++;
}
if(!str.equals(""))
{
if(m==0)
{
str1 = new String("1");
st = str1.concat(str);
}
else if(m!=0)
{
st = str;
}
}
buf = new StringBuffer(st.substring(0,(st.length()/2)));
if((st.length()%2)==0)
{
st = st.substring(0,(st.length()/2)).concat(buf.reverse().toString());
}
else if((st.length()%2)!=0)
{
st = st.substring(0,(st.length()/2)+1).concat(buf.reverse().toString());
}
/*System.*/out.println(st);
out.flush();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
String replaceCharAt(String s, int pos, char c)
{
StringBuffer buf = new StringBuffer(s);
buf.setCharAt(pos,c);
return buf.toString();
}
public static void main(String args [])
{
new Main();
}
}