题目

从标准输入读入一个字符串,判断该字符串是否为回文字符串(即正向读和反向读完全相同的字符串)。

输入格式:一行输入一个不含空白字符的字符串。

输出格式:若为回文字符串输出 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