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

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

ISRO CS 2018 | 问题 32

本题涉及字符串操作,需要编写一个程序来判断一个字符串是否是回文串。

问题描述

给定一个字符串,判断它是否是回文串。回文串是指正序和倒序读都相同的字符串。

可以假定字符串只包含小写字母。输入的字符串长度最大为 10^5。

输入格式

输入为一行字符串。

输出格式

如果输入的字符串是回文串,输出字符串 “YES”;否则,输出字符串 “NO”。

示例

输入:

madam

输出:

YES

输入:

orange

输出:

NO
解题思路

可以将字符串反转,判断是否和原字符串一致。

另外,也可以利用双指针技巧,从两端同时向中间扫描,判断这两个字符是否相等。

代码实现

以下是 Python3 代码实现:

s = input()

if s[::-1] == s:
    print("YES")
else:
    print("NO")

以下是 C++ 代码实现:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s;
    cin >> s;

    int n = s.size();

    bool flag = true;

    for (int i = 0; i < n / 2; ++i)
    {
        if (s[i] != s[n - i - 1])
        {
            flag = false;
            break;
        }
    }

    if (flag)
    {
        cout << "YES" << endl;
    }
    else
    {
        cout << "NO" << endl;
    }

    return 0;
}

以上为两种常见的实现方法,算法时间复杂度均为 $O(n)$。