C++判断字符串是否是回文(palindrome)
回文串是指正读与反读完全一致的字符串,如“level”“noon”等,其核心特征为对称性。判断方法主要包括双指针法(从首尾向中间逐对比较字符)和字符串反转比对法,时间复杂度为O(n)。动态规划技术通过二维数组dp[i][j]判定子串回文性,应用于最长回文子串、回文分割等复杂问题。
算法发展包含双指针法的普及与优化,以及动态规划、中心扩散法的扩展应用。中心扩散法通过单字符或双字符中心向外检测奇偶长度回文串,动态规划则解决子串计数、分割等场景的时空复杂度问题。工程实践中衍生出预处理标准化(如去空格、转小写)和多语言实现方案(Java/C++/Python) [1]。应用领域从基础算法测试扩展到数据压缩、对称美学设计等跨学科场景。
输入
csdn
输出
csdn is not palindrome.
#include<bits/stdc++.h>
using namespace std;
bool checkPalindrome(string str){for(int i=0;i<str.length()/2;i++){if(!(str[i]==str[str.length()-1-i])){return false;}}return true;
}
int main(){string str;cin>>str;if(checkPalindrome(str)){cout<<str<<" is palindrome.";}else{cout<<str<<" is not palindrome.";}return 0;
}
这段C++代码实现了一个判断字符串是否为回文的功能。程序通过checkPalindrome函数逐个比较字符串首尾对称位置的字符,若有不匹配则返回false,否则返回true。主函数读取输入字符串后调用该函数,输出判断结果。例如输入"csdn"会输出"csdn is not palindrome"。代码简洁高效,时间复杂度为O(n/2),适合处理回文字符串判断问题。