前言
提示:这里可以添加本文要记录的大概内容:
Leetcode7 整数反转。
应用集合中的栈和异常捕获解决问题。本人比较菜,能够AC就满足了,性能问题等足够厉害在考虑吧。
—LeetCode题目地址:https://leetcode.cn/problems/reverse-integer/description/
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1]
,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
-231 <= x <= 231 - 1
二、思路
首先他要反转,我就先把他变成字符串,然后判断字符串第一位是是否为’-',如果是就忽略符号位进行后续操作,先把他们依次获取每个字符,把他压入栈中,全部压入之后,然后依次出栈,拼接成字符串,这样得到的就是之前字符串的反转后的字符串,再根据是否是负数添加负号,最后将字符串转变成整型,但是转变后可能会超出int
的范围即Integer.MIN_VALUE和Integer.MAX_VALUE之间,如果不在这范围之间会报异常,于是利用异常捕获,进行区分,如果异常说明不在这范围根据题意返回0,否则返回转换后的值。
二、代码实现
第一种方法代码实现
class Solution {
public int reverse(int x) {
String str=String.valueOf(x);
int i=0;
if(str.charAt(0)=='-')
{
i=1;
}
Stack<Character> stack = new Stack<>();
for(;i<str.length();i++ ){
stack.push(str.charAt(i));
}
String result="";
while(!stack.empty())
{
result+=stack.pop();
}
result=str.charAt(0)=='-'?"-"+result:result;
try{
int resultNum=Integer.valueOf(result);
return resultNum;
}catch(Exception e){
return 0;
}
}
}
总结
提示:这里对文章进行总结
感觉用python刷这些算法其实更容易,因为他有好多强大的封装方法。所有以前总是想不利于这些现成的集合和一些方法去解算法题目,真的好累。