首先,什么叫回文串?一个字符串,如果从前向后读和从后向前读都是同一个字符串,那么我们就称之为回文串。例如,单词“mom”、“dad”、“noon”都是回文串。
解决方法:先判断该字符串的第一个字符和最后一个字符是否相等,如果相等,检查第二个和倒数第二个字符是否相等,持续这个过程,直到出现不匹配的情况或者字符串中所有的字符都检验完毕,当字符串是奇数个字符时,不用检查中间字符。
具体实现过程:定义两个名为low和high的变量来标识字符串s的开始位置和结束位置,初始状态时,low的值为0,high的值为s.length()-1,如果处在这两个位置的字符匹配,就给low加1,同时给high减1,这个过程一直持续到low>=high或没有出现匹配的情况。
具体代码如下:
<!-- lang: java -->
package ne.winter;
import java.util.Scanner;
public class CheckPalindrome {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = input.nextLine();
if(isPalindrome(s)){
System.out.println(s + " 是回文串!");
}else{
System.out.println(s + " 不是回文串!");
}
}
/**
* 判断是否是回文数
* @param s
* @return
*/
public static boolean isPalindrome(String s){
//第一个字符
int low = 0;
//最后一个字符
int high = s.length() - 1;
while(low < high){
if(s.charAt(low) != s.charAt(high)){
return false;//不是回文数
}
low++;
high--;
}
return true;//是回文数
}
}