LeetCode: Reverse integer
来源:互联网 发布:淘宝新品标签规则 编辑:程序博客网 时间:2024/06/11 06:53
如上所示为题目,它要求将整数以中间位以“镜像"的形式进行转换,具体参考题目。
注意点:1)整数0的转换仍为0;2)负数的转换可以当成正数进行考虑;3)对最后的结果进行溢出分析,若溢出则返回0.
思路分析:
本算法将整数通过函数sprintf转换为字符串进行考虑。
1)考虑num=0和num属于[-9,9]的情况;
2)若num<0,则num=-num;
3)通过sprintf将整数转换到字符串进行处理;(例如: sprintf(str,"%d",num) )
4)统计字符串长度记len,用于开辟长度为len的内存,存放相应位的数字;
5)遍历字符串,填充内存;
6)对内存的头和尾同时遍历,并调养函数Swap进行交换;
7)计算内存对应的结果sum,对sum进行溢出分析;
下面给出源码:
<span style="font-size:14px;">#define size 1024#define P_a 2147483647//consider int overflow#define N_a -2147483648void Swap(int *p, int *q ){ int temp; temp=*p; *p=*q; *q=temp; return;}int reverse(int x) { int flag=1; int dis; int i,j;// int count=0;//count the symbol '0' int len=0; int sum=0; int num=x; int *p; int *c_p; int *t_p; char *str=(char*)malloc(sizeof(char)*size); char *c_str=str; if(num<0) { flag=-1;//negtive number } //consider [-9,9], return itself if(abs(num)<10) { return num; } if(flag<0) { num=(-num); } //reverse interger to string sprintf(str,"%d",num); while(*c_str!='\0') { len++; c_str++; } c_str=str; p=(int*)malloc(sizeof(int)*(len+1)); c_p=p; while(*c_str!='\0') { *c_p=*c_str-'0'; c_str++; c_p++; } free(str); //swap c_p=p; t_p=p+len-1; for(i=1, j=len; i<j; i++,j--) { Swap(&*c_p,&*t_p); c_p++; t_p--; } c_p=p; t_p=p; //consider overflow if(len>10) { return 0; } else if(len==10 && *p>2) { return 0; } //transfer into for(i=1; i<=len; i++) { sum=sum+(*c_p)*pow(10,len-i); c_p++; } free(p); //consider overflow if(flag<0) { if((-sum)!=0) { dis=(-sum)-N_a; if(dis<=0) { return 0; } else if(dis>0) { return -sum; } } else { return sum; } } else if(flag>0) { dis=sum-P_a; if(dis>=0) { return 0; } else if(dis<0) { return sum; } }}</span>
0 0
- LeetCode:Reverse Integer
- LeetCode: Reverse Integer
- [Leetcode] Reverse Integer
- LeetCode : Reverse Integer
- [LeetCode] Reverse Integer
- Leetcode: Reverse Integer
- LeetCode 7 - Reverse Integer
- leetcode 104: Reverse Integer
- Leetcode : Reverse Integer
- 【leetcode】Reverse Integer
- [LeetCode]Reverse Integer
- LeetCode-Reverse Integer
- [leetcode] Reverse Integer
- LeetCode - Reverse Integer
- leetcode之Reverse Integer
- LeetCode | Reverse Integer
- LeetCode: Reverse Integer
- Leetcode: Reverse Integer
- 欢迎使用CSDN-markdown编辑器
- [Android]网络摄像头抓拍功能的折腾
- ios开发 向右滑动手势实现返回.在NavigationController中如何设置
- Java设计模式之单例模式
- Java4Android-面向对象基础1
- LeetCode: Reverse integer
- 面试经验
- HDU4638:Group(线段树离线处理)
- 一、动态规划(1)相似基因
- 用9path图片做背景 button和textview的文字不显示
- 053 第500题
- poj 1182 食物链(带权并查集)
- VNC连不上主机
- js练习题(一)