C/C++面试之算法系列--从“整数转换成字符串”看算法的联想

  【序】“将给定的一个整数转换成字符串”是面试中常见的考题,本文参考了两位CSDN博友的帖子,在此感谢!

 
从低位开始转换,然后再翻转字符串是最容易想到的方式;先确定该整数的位数,取模运算从低位开始,将保存的位置递减,此方法无需翻转字符串,因此整体效率较高,值得借鉴。
 
受先确定该整数的位数的思想启发,我想取商运算从高位开始也可以,并且是顺序存储,无需翻转字符串
 
从获得最高位的方法,我又获得了一点想法,那就是用递归的方式来获得最高位,递归的条件很简单,只要参数不为10以内,即表示当前未找到最高位,当然递归退出的条件是当前数为个位数了
 
发现很多算法都有一定的共性,总能找到其中的某些联系,我相信只要大家善于思考,举一反三,从不同的角度包括时间效率空间效率去考察时,定会受益良多
最后一个递归算法稍有瑕疵,欢迎朋友们讨论!
 
************************************************
将给定的一个整数转换成字符串
Sailor_forever   sailing_9806@163.com  转载请注明
×××××××××××××××××××××××××××××××
算法一 计数互换
 
下面的这个算法显示了一个C语言新手所应有的水平。而且处理不完全,算法考虑不周到,代码过于啰嗦,不够简洁。
char * IntToStr(int Number)
{
   char ch,*str,*t;
   int i ,Len=0;
   str = (char *)malloc(11*sizeof(char));
   t = str;
   while(Number!= 0)
   {
      *t = (Number %10)+0x30;
     Number = Number /10;
      Len++;
      t++;
   }
   *t = '/0';
   t = str;
   for(i=0;i<Len/2;i++)
   {
      ch = *t;
      *t = *(t+Len-2*i-1);
      *(t+Len-2*i-1) = ch;
      t++;
   }
   return str;
}
×××××××××××××××××××××××××××××××
算法二 指针,首尾互换
 
char * IntToStr(int Number)
{
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值