#创作计划#回文数判断小妙招
2024-12-30 20:25:44
发布于:江苏
方法很简单,大佬可能已经知道了,作者是一名蒟蒻,勿喷。
判断回文数非常麻烦,对于蒟蒻来说还容易写错,趁着我生病在家蒟蒻就说说如何用字符串简洁判断回文数。
首先我们要知道几个函数(解释不全,但是判断回文数够用了):
函数
to_string
:可以把整数类型转换成字符串类型
用法:
int n;
cin>>n;
string s=to_string(n)
stoi
:可以把字符串类型转换成整数类型,我记得好像只有固定的环境能用,有谁能给个补充,我不能百度。
用法:
string s;
cin>>s;
int n=stoi(s);
reverse
:可以反转字符串,不过要给出下标,并且函数不会返回值。
用法:
string s="Love ACGO";
reverse(s.begin(),s.end());
千万不要写成这两种情况:
//这样
reverse(s);
//或者这样
string d=reverse(s.begin(),s.end());
不然就见祖宗了,正式考试的时候写错别怪我没提醒过你们。(别问我怎么知道容易写错的,我绝对没写错过,绝对没有!)
同时注意这三个函数都是要导库的,但是具体导什么库嘛……蒟蒻本人就不太清楚了,不如万能头(
或者有谁能帮忙查一下啊 。
并且要注意 reverse
函数的时间复杂度是 ,超时了别怪我没提醒过你们。
正式实现
#include<bits/stdc++.h>
using namespace std;
string s,d;
int main(){
cin>>s;
d=s;//赋成一样的值
reverse(s.begin(),s.end());//反转s
if(s==d) cout<<"Yes";//判断反转后是否与原来相同
else cout<<"No";
return 0;
}
题目试验
口说无凭,拿道题出来试一试。
就决定是你了:A601.回文闰年
#include<bits/stdc++.h>
using namespace std;
int n;
string s,d;
int main(){
cin>>n;
s=d=to_string(n);
reverse(s.begin(),s.end());
if(s==d&&(n%400==0||(n%4==0&&n%100!=0))) cout<<"Yes";
else cout<<"No";
return 0;
}
事实证明肥肠好用,。
不过又经事实证明,像A22663.回文质数 Prime Palindromes这样的极限数据是无法跑过的。有没有种可能是网站的测评机太菜了所以数据过于极限的时候就不要想着暴力判断了,要另外想一想其他方法。(不过经测试,这题的数据过于水了,虽然极端数据过不去,但是题能过啊)
蒟蒻很菜,写的可能有错误,请各位大佬指出来,上面的两个地方谁能帮我查一下啊 。
码字不易,给个赞吧!球球了 。
全部评论 3
顶一下
1周前 来自 江苏
0双指针从后往前扫描也可以
1周前 来自 广东
0但是容易写错啊,对于蒟蒻来说写错就见祖宗了
1周前 来自 江苏
0双指针不是从两端往中间扫描吗
1周前 来自 江苏
0
顶
1周前 来自 江苏
0顶一下
1周前 来自 江苏
0
有帮助,赞一个