📅  最后修改于: 2023-12-03 15:23:04.495000             🧑  作者: Mango
本题涉及字符串操作,需要编写一个程序来判断一个字符串是否是回文串。
给定一个字符串,判断它是否是回文串。回文串是指正序和倒序读都相同的字符串。
可以假定字符串只包含小写字母。输入的字符串长度最大为 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)$。