[LeetCode OJ]7. Reverse Integer

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

个人的大体思路:

  先判断是整数还是负数,flag记录符号(-1或1),把数字取绝对值然后转换成字符串,字符串逆序,把字符串再转换成数字,再乘以flag添加符号.这样就解决了数字末尾是0,翻转过来0成为开头,还要想办法去掉开头0的问题.代码如下

 1 int reverse(int x) {
 2     char s[100],c[100];
 3     int flag = 1;
 4     //记录符号
 5     if (x < 0) {
 6         flag = -1;
 7     }
 8     //取绝对值
 9     x = abs(x);
10     //把数字转换成字符串
11     sprintf(s, "%d",x);
12
13     int len = strlen(s);
14     int j = 0;
15     for (int l=len-1; l>=0; l--) {
16         //c字符串++遍历赋值,s字符串--遍历,则c字符串为s字符串的逆序
17         c[j] = s[l];
18         j++;
19     }
20     //将c字符串转为数字
21     sscanf(c, "%d",&x);
22     //给得到的数字加上符号
23     x *= flag;
24
25     return x;
26 }

  结果...当然是Wrong Answer,还好的是有出错的测试数据给你.(详细如下图)

  看了测试输入和测试输出,就开始考虑为什么输入1534236469之后应该输出0.上网查了资料,int最大为2147483647,1534236469并没有超出int范围,而且题中也说了给一个integer数,不可能超出了int范围.那应该就是结果超出了int范围.而且一个int值逆序后,是有可能超过int范围的.按照测试数据来看,如果转换结果超过了int范围,输出结果应该为0.

  那么既然结果有可能超过int范围,那么,在逆序后的字符串变为数字的时候,就不能用int类型变量接收了,于是我把接收变量变为long型,并且判断,如果超过了int范围,则结果赋值0.代码如下:

 1 int reverse(int x) {
 2     char s[100],c[100];
 3     int flag = 1;
 4     if (x < 0) {
 5         flag = -1;
 6     }
 7     x = abs(x);
 8     sprintf(s, "%d",x);
 9
10     int len = strlen(s);
11     int j = 0;
12     for (int l=len-1; l>=0; l--) {
13         c[j] = s[l];
14         j++;
15     }
16
17     long res;
18
19     sscanf(c, "%ld",&res);
20
21     //判断是否超过了int范围
22     if (res > INT32_MAX || res < INT32_MIN) {
23         res = 0;
24     }
25
26     res *= flag;
27     return res;
28 }

  运行结果就正确了.

  

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-15 04:34:25

[LeetCode OJ]7. Reverse Integer的相关文章

[LeetCode OJ] Roman to Integer

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 下面是百度得到的关于罗马数的解释: 我的代码: 1 class Solution { 2 public: 3 int romanToInt(string s) { 4 map<char,int> conversion; 5 conversion.insert(make_pair('

Leetcode练习题 7. Reverse Integer

7. Reverse Integer 题目描述: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321 Example 3: Input: 120 Output: 21 Note: Assume we are dealing with an environment which could o

LeetCode记录之——Reverse Integer

Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 Note:The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows. 反转数字的整数. 示例1:x = 123,返回321示例2:x = -

【LeetCode算法】Reverse Integer

LeetCode第7题: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321 Example 3: Input: 120 Output: 21 Note:Assume we are dealing with an environment which could only store int

LeetCode题解 #7 Reverse Integer

上一次做完一个中等题觉得还挺简单,做一下简单题看看. 题目大意:给定一个整型(即int),将它的数位反过来,如321变为123,-321变为-123. 做了很久,因为简单题耗时的地方在于恶心!! 最后才看见溢出的时候应该返回0!! 一点都不难,特别是对于java. 我的思路: 1.将读入的int型包装成Integer,然后在转换成String.(看看前面有没有+-号) 2.将String 倒置,再转换为long.(一定要是long,否则无法判断溢出) 3.如果没溢出,再将long转换为int.

LeetCode题目1 - Reverse Integer

Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321Discuss: 1.If the integer's last digit is 0, what should the output be? ie, cases such as 10, 100.   2.Reversed integer overflow. public static int ReverseIntege

【leetcode】7. Reverse Integer

题目描述: Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 解题思路: 这道题比较简单,只要注意两个问题:1,输入可能有123,-123两种情况.2,可能会出现值溢出的情况,所以先用long类型处理,决定没有溢出后再转换为int 具体代码: 1 public static int reverse(int x) { 2 String s =""+x; 3

【Leetcode】 #7 Reverse Integer

Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 测试用例: 123………………321 -123………………-321 1200………………21 45134543545…………0(overflow) 2147483646………………0(虽然它小于最大值2147483647,但是调转过来之后溢出!) 最后两个陷阱是不容易发现的. int类型的最大值是2147483647

&lt;LeetCode OJ&gt; 345. Reverse Vowels of a String

Total Accepted: 537 Total Submissions: 1488 Difficulty: Easy Write a function that takes a string as input and reverse only the vowels of a string. Example 1: Given s = "hello", return "holle". Example 2: Given s = "leetcode"