📌  相关文章
📜  国际空间研究组织 | ISRO CS 2008 |问题 27(1)

📅  最后修改于: 2023-12-03 15:07:33.347000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2008 |问题 27

问题描述

对于给定的一个字符串,编写一个程序来检查它是否是回文。如果是,请输出 "Yes",否则输出 "No"。

输入格式

一个字符串,长度不超过 1000。

输出格式

如果输入的字符串是回文,则输出 "Yes",否则输出 "No"。

样例输入
abba
样例输出
Yes
解题思路

回文是指正着读和倒着读都是一样的词语或句子。我们可以使用两个指针从字符串的两端开始向中间扫描,如果扫描到的两个字符不相同,则不是回文;否则继续扫描。当两个指针相遇时,如果两个指针扫描过的字符都相同,则是回文。

参考代码
# Python 代码
def isPalindrome(s):
    i, j = 0, len(s)-1
    while i < j:
        if s[i] != s[j]:
            return "No"
        i += 1
        j -= 1
    return "Yes"

s = input()
print(isPalindrome(s))
// C++ 代码
#include <iostream>
#include <cstring>

using namespace std;

int main() {
    char s[1001];
    cin >> s;
    int n = strlen(s);
    int i = 0, j = n-1;
    while (i < j) {
        if (s[i] != s[j]) {
            cout << "No" << endl;
            return 0;
        }
        i++;
        j--;
    }
    cout << "Yes" << endl;
    return 0;
}
// Java 代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int n = s.length();
        int i = 0, j = n-1;
        while (i < j) {
            if (s.charAt(i) != s.charAt(j)) {
                System.out.println("No");
                return;
            }
            i++;
            j--;
        }
        System.out.println("Yes");
    }
}