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

文章介绍了如何使用string类型而非栈来实现进制转换,通过短除法和字符映射简化了过程。同时提出了利用string的翻转特性直接检查回文数,避免了双指针方法。强调在某些场景下,将整数转换为string可以提高灵活性和操作性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

这里给出一种自己总结的用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是一种明智的做法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值