回文数 进制转换的一点小思考

传统的进制转换是用栈来实现,这样子没什么问题,但是相对来说需要理解栈的工作原理

这里给出一种自己总结的用string实现的进制转换

char get(int x)//以16进制为例
{
     if(x<=9)return x+'0';
     return x-10+'A';
}

string base(int a,int b)
{
    string c="";//可以不用初始化
     while(a)
     {
         int t=a%b;
         c+=get(t);
         a=a/b;
     }
     reverse(c.begin(),c.end());//用短除法实现,最后要翻转回来
     return c;
}

还有一种是回文数的实现

//传统的判断回文数是双指针从头尾指到中间,而回文数的一个特点是翻转一次依然跟原数相同,可以直接用reverse实现
bool check(string a)
{
    string b=a;
    reverse(b.begin(),b.end());
    if(a!=b)
    return false;
    return true;
}

在日常写题中,string是一种很常用的数据类型,我个人理解是大部分情况下string可以看成vector<char>,但vector的使用相对没有string灵活,整数int大部分情况下也很难操作因为他在内存上可以看成是一块数据,除了位运算的时候可以分割,但位运算的时候其实也是看成一长串的数组

所以综上所述,我认为大部分场合下将整数转换成string是一种明智的做法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值