📅  最后修改于: 2023-12-03 15:37:15.267000             🧑  作者: Mango
该问题要求我们编写一个程序,根据一行输入的字符串,判断该字符串是否为回文字符串。回文字符串指正着读和倒着读都一样的字符串。
输入包含多组测试数据。每组数据包含一个字符串,字符串的长度不超过 $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)$。