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

📅  最后修改于: 2023-12-03 14:50:47.159000             🧑  作者: Mango

ISRO CS 2014 | 问题 80

问题描述

给定一个字符串,编写一个程序来判断该字符串是否是回文。如果一个字符串,从头到尾读和反过来读都是一样的,那么它就是回文。

输入格式

输入包含一个字符串 S,其中 1 <= |S| <= 100000。

输出格式

如果 S 是一个回文字符串,则输出 YES,否则输出 NO

示例

输入:

madam

输出:

YES
解题思路

判断一个字符串是否是回文字符串,最简单的方法就是将字符串翻转,然后和原字符串进行比较,如果两个字符串是一样的,那么就是回文字符串,否则就不是。

但是这种方法有一个很明显的缺点,那就是翻转一个字符串需要额外的内存空间,这在输入规模很大的时候会非常消耗内存。

更好的做法是从字符串的两端开始向中间进行比较,因为如果一个字符串是回文字符串,那么它的左边和右边的字符肯定是一样的,所以可以从两端开始进行比较,如果两端的字符不相同,那么该字符串就不是回文字符串。

具体实现可以通过两个指针,一个指向字符串的开头,另一个指向字符串的结尾,然后循环向中间移动指针,每次比较两个指针指向的字符是否相等即可。

参考代码
def is_palindrome(s):
    left = 0
    right = len(s) - 1

    while left < right:
        if s[left] != s[right]:
            return False
        left += 1
        right -= 1

    return True

s = input()

if is_palindrome(s):
    print("YES")
else:
    print("NO")
注意:

1. 本题需要判断输入字符串是否是回文字符串,并输出结果。

2. 因为本题没有明确的输入格式,所以在实现时需要自行处理输入字符串的格式。

3. 本题可以通过从字符串的两端开始向中间进行比较的方式来判断字符串是否是回文字符串。

4. 具体实现时,可以使用两个指针,一个指向字符串的开头,另一个指向字符串的结尾,然后循环向中间移动指针,每次比较两个指针指向的字符是否相等即可。

5. 本题的参考代码使用了Python实现,其中is_palindrome是一个判断字符串是否为回文字符串的函数,该函数的具体实现使用了上述的方法。

6. 参考代码中使用了Python的input()函数来读取输入字符串,需要注意的是,Python的input()函数会自动去掉输入字符串中的空格和换行符,所以在实现时需要自行处理输入字符串的格式。