2021-08-28 力扣 - 整数翻转 - 简单_2021max旋转整数-程序员宅基地

技术标签: 算法  力扣  java  

整数翻转 - 简单

题目

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例:

输入:x = 123
输出:321

输入:x = -123
输出:-321

输入:x = 120
输出:21

输入:x = 0
输出:0

  • 提示: - 231(-2147483648) <= x <= 231 - 1(2147483647)

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer


涉及知识:

1、字符串和数字的相互转换

字符串转数字:

/**方法一
  通过基本类型对应的包装类则可以实现把字符串转换成基本类型,8个包装类都提供了一个
  parseXxx(String str)静态方法用于将字符串转换成基本类型。此方法直接使用静态方法,
  不会产生多余的对象,但会抛出异常。
  注意:如果字符串不是数值型字符串,转换将导致一个运行时错误。
**/
String s = "123";

byte b = Byte.parseByte(s);
short t = Short.parseShort(s);
int i = Integer.parseInt(s);
long l = Long.parseLong(s);
Float f = Float.parseFloat(s);
Double d = Double.parseDouble(s);
boolean bo = Boolean.parseBoolean(s);
char c = Character.parseCharacter(s);

/**方法二
Integer.valueOf(s) 相当于new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象。
**/
i=Integer.valueOf(s).intValue();

数字转字符串:

/**方法一
其中 value 为任意一种数字类型。将不用担心object是否为null值这一问题。
当object为null时,String.valueOf(object)的值是字符串”null”,而不是null!!
**/
String s = String.valueOf(value);

/**方法二
在使用时要注意,必须保证object不是null值,否则将抛出NullPointerException异常。
此方法效率最高
**/
String s = Object.toString();

/**方法三
**/
String s = i + “”;

/**方法四
使用这种方法时,需要注意的是类型必须能转成String类型。因此最好用instanceof做个类型检查,
以判断是否可以转换。否则容易抛出CalssCastException异常。此外,需特别小心的是因定义为
Object类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外
小心。此外,因null值可以强制转换为任何java类类型,(String)null也是合法的。
**/
String s =String)i;

2、字符串相关函数

//获取字符串长度
string.length();

//将字符串分割为字符数组
string.toCharArray()[0];

//获取指定位置的字符
string.charAt(0);

//去掉字符串的左右空格
string.trim();

//截取字符串
string.substring(1);
string.substring(1,3);

//StringBuffer字符串拼接
StringBuffer strbuf = new StringBuffer("abc");
strbuf.append("123");

//StringBuffer字符串反转
StringBuffer strbuf = new StringBuffer("abc");
strbuf.reverse();

//StringBuffer字符串截取
StringBuffer strbuf = new StringBuffer("abc");
strbuf.subSequence(int start, int end);

//字符串拼接
string1.concat(string2);

编程语言:Java

我的解法

改了好多次,最后发现了subSequence和reverse这两个函数;

class Solution {
    
    public int reverse(int x) {
    
      String str = String.valueOf(x);
      if(x < 0){
    
        str = "-" + new StringBuffer(str.subSequence(1,str.length())).reverse().toString();
      }else{
    
        str = new StringBuffer(str.subSequence(0,str.length())).reverse().toString();
      }
      int i = 0;
      try{
    
          i = Integer.parseInt(str);
      }catch(NumberFormatException e){
    
          e.printStackTrace();
      }
      return i;
    }
}

官方解法

复杂度分析

时间复杂度:O(log∣x∣)。翻转的次数即 xx 十进制的位数。

空间复杂度:O(1)。

class Solution {
    
    public int reverse(int x) {
    
        int rev = 0;
        while (x != 0) {
    
            if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
    
                return 0;
            }
            int digit = x % 10;
            x /= 10;
            rev = rev * 10 + digit;
        }
        return rev;
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Chen_Yumin/article/details/119963441

智能推荐

setInterval()与setTimeout()_前端setinterval每隔多少秒执行一次-程序员宅基地

文章浏览阅读102次。setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式setTimeout():在指定的毫秒数后调用函数或计算表达式,只调用一次例子:<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> ..._前端setinterval每隔多少秒执行一次

Afraidgate: Major Exploit Kit Campaign Swaps Locky Ransomware for CryptXXX-程序员宅基地

文章浏览阅读557次。目录An Evolving CampaignThe Angler/Bedep/CryptXXX ComboConclusionIndicators of CompromiseByBrad DuncanApril 28, 2016 at 1:00 PMCategory:Malware,Threat Prevention,Unit 42Tags:Afraid..._afraidgate

MATLAB基础应用精讲-【基础知识篇】条件和循环控制语句_matlab条件控制语句-程序员宅基地

文章浏览阅读336次。Matlab控制流语句包括条件语句、循环和分支。if, elseif, else 条件为 true 时执行语句。for 用来重复指定次数的 for 循环。parfor 并行循环。switch, case, otherwise 执行多组语句中的一组。try, catch 执行语句并捕获产生的错误。while 条件为 true 时重复执行的 while 循环。break 终止执行 for 或 while 循环。continue 将控制权传递给 for 或 while 循环的下一迭代。_matlab条件控制语句

Linux虚拟地址空间布局以及进程栈和线程栈总结【转】-程序员宅基地

文章浏览阅读135次。转自:http://www.cnblogs.com/xzzzh/p/6596982.html原文链接:http://blog.csdn.net/freeelinux/article/details/53782986【侵删】本文转自多个博客,以及最后有我的总结。我没有单独从头到尾写一个总结的原因是别人已经写得很好了,我不花大量时间是无法达到这水平的。..._linux进程内存空间中安低地址到高地址的顺序,最高的是

mysql slave master_MySQL Master Slave Docker部署例子-程序员宅基地

文章浏览阅读137次。本文对应代码:github用Docker部署基于GTID的MySQL Master-Slave Replication例子。启动Master写一个文件mysql-master.cnf:[mysqld]server_id=1binlog_format=ROWgtid_mode=ONenforce-gtid-consistency=true这个配置文件把Master的server_id设置为1,要注意..._docker mysql master slave

【Thymeleaf入门】01、标准表达式、判断与循环、模板布局_@{${page.path}(current=1)}-程序员宅基地

文章浏览阅读592次。Thymeleaf作用:生成动态的HTML模板文件包含了HTML静态页面和一些表达式,这些表达式可以被model中的数据替换,model传进去不同的数据,HTML就可以动态变化官网:https://www.thymeleaf.org/文档:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#what-kind-of-templates-can-thymeleaf-process语法文档上都有,常用语法:标准表达式(对应文档_@{${page.path}(current=1)}

随便推点

android发布市场,TWS耳机集中发布,安卓阵营搅动市场-程序员宅基地

文章浏览阅读135次。原标题:TWS耳机集中发布,安卓阵营搅动市场凭借降噪和音质两大卖点,国内安卓阵营正试图彻底改变TWS耳机市场的游戏规则……文/智物近年来,手机厂商之间的竞争已经不再局限于智能手机领域,生态链的比拼开始逐渐成为主旋律,其中又以TWS(真无线蓝牙立体声)耳机之间的竞争最为激烈。当下,TWS耳机市场有多火爆?根据艾媒资讯的数据,2020年中国大陆TWS耳机出货量达3150万部,市场较2019年同比增长8..._android qhs

掌握 Ajax,第 3 部分: Advanced requests and responses in Ajax_parameter conditions "ajaxsaveflle" not met f or a-程序员宅基地

文章浏览阅读1k次。Mastering Ajax, Part 3: Advanced requests and responses in Ajax Gain a complete understanding of HTTP status codes, ready states, and the XMLHt_parameter conditions "ajaxsaveflle" not met f or actual request parameters:

大数据挖掘分析领域的划分_在统计学领域中,数据分析可以划分为-程序员宅基地

文章浏览阅读841次。当刚涉足数据挖掘分析领域的分析师被问及,数据挖掘分析人员最重要的能力是什么时,他们给出了五花八门的答案。其实我想告诉他们的是,数据挖掘分析领域最重要的能力是:能够将数据转化为非专业人士也能够清楚理解的有意义的见解。简单地来说,分析可被划分为。在这里相信有许多想要学习大数据的同学,大家可以+下大数据学习裙:957205962,即可免费领取套系统的大数据学习教程1.可视化分析:大数据分..._在统计学领域中,数据分析可以划分为

cef3的各个接口你知道几个_ceffindhandler-程序员宅基地

文章浏览阅读8.3k次,点赞4次,收藏7次。CEF3基本的框架包含C/C++程 序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和 Chromium&Webkit的操作细节。它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户插件,协议,javascript对象以及 javascript扩展,宿主程序可以随意地控件资源下载,导航,下下文内容和打印等。下边总结一些最常用到的类和接口,便于了解整个cef3的代码。 _ceffindhandler

kotlin将对象转换为map_Java 8 Stream API转换到Kotlin集合API-程序员宅基地

文章浏览阅读667次。Kotlin提供的集合操作的API相对Java8Stream的API简洁很多。下面是Java8StreamAPI转换到Kotlin集合API。映射属性聚合为列表//Java:Listnames=users.stream().map(User::getName).collect(Collectors.toList());//Kotlin:vallist=user.map{..._collectors.groupingby kotlin

C++之多态的一个例子-程序员宅基地

文章浏览阅读475次。[例12.1] 先建立一个Point(点)类,包含数据成员x,y(坐标点)。以它为基类,派生出一个Circle(圆)类,增加数据成员r(半径),再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。要求编写程序,重载运算符“<<”和“>>”,使之能用于输出以上类对象。这个例题难度不大,但程序很长。对于一个比较大的程序,应当分成若干..._c++ 多态 实例 csdn

推荐文章

热门文章

相关标签