算法刷题Day2

前言

提示:这里可以添加本文要记录的大概内容:

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刷这些算法其实更容易,因为他有好多强大的封装方法。所有以前总是想不利于这些现成的集合和一些方法去解算法题目,真的好累。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值