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

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

国际空间研究组织 | ISRO CS 2015 | 问题 42

该问题要求我们编写一个程序,根据一行输入的字符串,判断该字符串是否为回文字符串。回文字符串指正着读和倒着读都一样的字符串。

输入格式

输入包含多组测试数据。每组数据包含一个字符串,字符串的长度不超过 $100$。

输出格式

对于每组测试数据,如果该字符串为回文字符串,则输出 "YES",否则输出 "NO"。

示例输入
abba
sumit
示例输出
YES
NO
解题思路

判断一个字符串是否为回文字符串,可以将其正序和反序的结果进行比较,如果相同就是回文字符串,否则不是回文字符串。为了不修改输入字符串,我们可以将其复制一份进行反序操作。

代码实现
while True:
    try:
        s = input().strip()
        # 复制字符串并反转
        rev_s = s[::-1]
        # 判断是否为回文字符串
        if s == rev_s:
            print("YES")
        else:
            print("NO")
    except:
        break
复杂度分析

复制字符串的时间复杂度为 $O(n)$,其中 $n$ 为字符串的长度。字符串比较的时间复杂度为 $O(n)$。因此,总时间复杂度为 $O(n)$,空间复杂度为 $O(n)$。因为只需要一份复制,所以空间复杂度可以看作为常数,即 $O(1)$。