題目描述

「回文」是一個文字、段落、數字,或是其他由字元組成的序列,從頭或是從尾開始閱讀的結果都是一樣的。



給定一個字串A,如果它是一個「回文」,輸出「Yes」,否則輸出「No」。這個字串只會由小寫英文字母組成,最多擁有50個字元。

舉幾個回文的例子:madam、anna、reviver。

原題網址

https://www.hackerrank.com/challenges/java-string-reverse

範例輸入

madam

範例輸出

Yes

解題概念

同時從字串的前端和尾端開始讀取字元,直到字串的中央。如果在過程中發現前後兩端的字元不相符,則此字串不是回文。如果成功讀取到中央的位置,則此字串是回文。

參考答案

import java.util.Scanner;

public class Solution {

    public static void main(final String[] args) {
        final Scanner sc = new Scanner(System.in);
        final String A = sc.next();

        final int length = A.length();
        final int halfLength = length / 2;
        boolean reverse = true;
        for (int i = 0; i < halfLength; ++i) {
            final char a = A.charAt(i), b = A.charAt(length - 1 - i);
            if (a != b) {
                reverse = false;
                break;
            }
        }
        System.out.println(reverse ? "Yes" : "No");
    }
}