This program to find if a string is a palindrome is not working properly due to logical errors. Pls help me correct this program.
public class Palindrome {
public String checkPal(String strr){
String rev;
char[] C = strr.toCharArray();
int left=0;
int right= (C.length)-1;
while(left<right){
char t=C[left];
C[left++] = C[right];
C[right--] = t;
}
for(int i=0; i<(C.length); i++){
}
rev = C.toString();
return rev;
}
public static void main(String[] args) {
String S = "level";
Palindrome p = new Palindrome();
String R = p.checkPal(S);
System.out.println(R);
if(S.toLowerCase().equals(R.toLowerCase())){
System.out.println("hey Pal :)");
}
else{
System.out.println("Bye Pal :<");
}
}
I tried to find if a string is palindrome and I'm expecting it to display "Hey pal :)" if it is.
C.toString()
simply returns the default toString
for an array, and does not return your new String
Try doing
return new String(C);
BTW, there is no reason to swap characters. Just copy from right to left. If it is a palindrome, it will be preserved and will compare to the original. Otherwise it won't.
C[left++] = C[right--];
And you can remove your empty for loop
as it serves no purpose.