题目
从标准输入读入一个字符串,判断该字符串是否为回文字符串(即正向读和反向读完全相同的字符串)。
输入格式:一行输入一个不含空白字符的字符串。
输出格式:若为回文字符串输出 yes,否则输出 no,末尾换行。
数据范围与约定:字符串长度不超过 1000。
思路与算法
1. 双指针碰撞检测
获取字符串长度 len,设置左指针 i = 0,右指针 j = len - 1。
2. 相向收缩比对
循环条件 i < j:若发现 s[i] != s[j] 则立即判定非回文退出;若指针相遇均完全一致,则为回文字符串。
完整程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
// 双指针相向比对
int left = 0, right = s.length() - 1;
boolean isPalindrome = true;
while (left < right) {
if (s.charAt(left) != s.charAt(right)) {
isPalindrome = false;
break;
}
left++;
right--;
}
System.out.println(isPalindrome ? "yes" : "no");
}
}运行示例
输入:
level输出:
yes