题目概述:
编写程序:判断给定的字符串是否为回文字符串。回文字符串“从前向后读”和“从后向前读”都相同
分析:
首先要判断什么样的形式是回文字符串。根据题意,qweewq就是回文字符串,从后往前,从前往后的读法一样。而形如qweewQ就不在回文字符串范围内。
很明显,要解此题,要分两种情况,即奇数个数的回文与偶数个数的回文(需要考虑到,但其实计算起来公式相同)。
我们可以分别从头从尾遍历字符串,用count来记录,当对应位置的字符相同时,count+1。
显而易见,设字符个数n,若count == n/2 为回文数(奇数偶数相同)。
举个例子,若n = 6,当count == 3时为回文字符串;若n=7,当count == 3时为回文字符串。
代码如下:
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String string = scanner.next(); //输入字符
int count = 0;
//i从头,j从尾遍历,一直到中间
for(int i = 0, j = string.length() - 1; i < string.length() / 2; i++, j-- ){
if(string.charAt(i) == string.charAt(j)){ //判断对应位置字符是否相同
count++; //计数
}
}
if(count == string.length() / 2) System.out.print("yes"); //判断是否为回文
else System.out.print("no");
运行结果如下: