查看: 3341| 回复: 11
收起左侧

Google : Write a function to reverse digits of an integer

wwwyhx | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   177
88%
12%
25

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
Write a function to reverse digits of an integer. E.g. 123 --> 321, -890
--> -98

上一篇:Facebook :Convert a BST to linked list
下一篇:Google : Calculate volume
tangyuan814 2011-10-25 03:01:17 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   154
99%
1%
2
也可以考虑一下 输出 前缀 0的,比如 890 --> 098
回复

使用道具 举报

 楼主| wwwyhx 2011-10-27 08:55:42 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   177
88%
12%
25

  1. int _inner_reverse(int x, int nMul)
  2. {
  3.         if (0 == x)
  4.                 return nMul;

  5.         return _inner_reverse(x/10, 10 * nMul + x % 10);
  6. }

  7. int ReverseInt(int x)
  8. {
  9.         int n = x;
  10.         if (x < 0)
  11.                 n = -x;

  12.         int ret = _inner_reverse(n, 0);
  13.         if (x < 0)
  14.                 return -ret;

  15.         return ret;
  16. }
复制代码
回复

使用道具 举报

nooneknow 2011-10-27 11:56:15 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   202
93%
7%
15
wwwyhx 发表于 2011-10-27 08:55


前阵子面试碰到过这个问题。
我当时也想用递归,interviewer说代价太大。
最后写出来,一个while就足够了。
回复

使用道具 举报

 楼主| wwwyhx 2011-10-27 12:40:05 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   177
88%
12%
25
前阵子面试碰到过这个问题。
我当时也想用递归,interviewer说代价太大。
最后写出来,一个while就足够了。
nooneknow 发表于 2011-10-27 11:56


while作就是拿个list啥的存储吧, 其实都差不多
回复

使用道具 举报

nooneknow 2011-10-27 14:37:30 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   202
93%
7%
15
while作就是拿个list啥的存储吧, 其实都差不多
wwwyhx 发表于 2011-10-27 12:40


interviewer意思是要求,空间只要O(1),而且只增加一个layer的stack。递归的代价增加太多stack空间。代码很简单。

  int reverse(int n){
                int result = 0;       
                while(n!=0){
                        result = result*10 + n%10;
                        n /=10;
                }
                return result;
        }
回复

使用道具 举报

 楼主| wwwyhx 2011-10-27 15:36:18 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   177
88%
12%
25
interviewer意思是要求,空间只要O(1),而且只增加一个layer的stack。递归的代价增加太多stack空间。代码很简单。

  int reverse(int n){
                int result = 0;       
                while(n!=0){
                        result = result*10 + n%10;
                        n /=10;
                }
                return result;
        }
nooneknow 发表于 2011-10-27 14:37


对啊!! 是呵, 为什么大家一看到这题就想到递归了, 估计都是类似的题看多了思维定式
回复

使用道具 举报

sprime 2011-10-28 22:21:45 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   3
100%
0%
0
回复 6# nooneknow


    这个不错
回复

使用道具 举报

wugoat 2011-11-6 21:01:23 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   6
100%
0%
0
版主你头像真邪恶,搞的我半天才把搞明白。。。
回复

使用道具 举报

serendipity0306 2012-1-6 10:25:01 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   15
100%
0%
0
怎么个邪恶伐?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表