题解 | #回文对称数#

回文对称数

https://ac.nowcoder.com/acm/problem/22169

用字符串解决


#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
    int n=0,i=0,j=0;
    cin>>n;
    int num=0;//字符串长度
    string s;
    int a=min(n,9);
    //一位数字一定是回文
    for(i=1;i<=a;i++){
        cout<<i<<endl;
    }
    //两位数字及以上
    if(n>=10){
        for(i=10;i<=n;i++){
            s=to_string(i);
            num=s.length();//转为字符串进行判断
            while(s[j]==s[num-j-1] && j<num/2){//如果不加j<num/2条件会出现问题 11则j=2
                j++;
            }
            if(j==num/2)//只要前后分别对应即可,j计数只到num/2
                cout<<i<<endl;
            j=0;//对j进行归0,后续继续计数
        }
    }
    return 0;
}
# 个人浅薄理解,没有考虑时间以及空间复杂度分析
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务