8-字符串转换整数
时间:2020-04-21
本文章向大家介绍8-字符串转换整数,主要包括8-字符串转换整数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
方法:
这题的做法大概是这样:
- 去掉前导空格
- 再是处理正负号
- 识别数字,注意越界情况。
这道题目如果只是简单地字符串转整数的话,就是简单地rev=rev*10+pop。 但是注意这道题目可能会超过integer的最大表示! 也就是说会在某一步(1)rev*10+pop> Integer.MAX_VALUE。或者(2)rev*10+pop< Integer.MIN_VALUE。
(1)假如是第一个情况。要么rev>Integer.MAX_VALUE/10,此时rev*10之后必然越界。要么rev==Integer.MAX_VALUE/10&&pop>7,因为int类型最大值2147483647,个位就是7。Integer.MAX_VALUE/10*10之后是2147483640,比int最大值小7,如果pop<=7还是不过界的。
(2)第二个情况,int最小值:-2147483648,个位数是8,和上面一样。。。。
class Solution { public int myAtoi(String str) { int rev = 0; char[] charList = str.toCharArray(); int length = str.length(); int zf = 1;//正负号 int i = 0;//到了str的哪一位 int pop = 0;//当前这一位的数 for(;i<str.length();i++)//此循环查找第一个非空字符串的位置 { if(charList[i]==' ') continue; else { if(charList[i] == '-'){ i++; zf = -1; break; } if(charList[i] == '+'){ i++; break; } if(charList[i] <'0' || charList[i] >'9'){//不是数字 return 0; }else{ break; } } } if(i==str.length()) return 0;//全都是空格,返回0.不用减一,如果上方循环一直continue,i会等于str.length() for(;i<str.length();i++) { if(charList[i]<'0'||charList[i]>'9')return rev;//不是数字,则终止循环,返回rev pop=(charList[i]-48)*zf;//字符转换为整数,减去48 if(rev>Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)){//最大值个位数是7,最小值个位数8,rev == Integer.MAX_VALUE/10时,rev乘以十之后,加上8就会越界。。。 return Integer.MAX_VALUE; } if(rev<Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)){ return Integer.MIN_VALUE; } rev=rev*10+pop; } return rev; } } /*1.开头空格,丢弃 2.开头正负号,记下来, 开头不是数字,返回0 开头是数字,开始计数(题目其实是找出前几位构成的整数)*/
原文地址:https://www.cnblogs.com/lzh1043060917/p/12743369.html
- 用SQL解一道有趣的数学题:Gauss和Poincare
- OpenSSL 转换证书格式
- 电子邮件服务器DKIM配置
- 自相矛盾:一个进程可以自成死锁么?
- 数据库安全·开发加密插件
- wordpress无法安装这个包。: PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file 'C:WINDOWSTEMP/wordpress-4.
- 数据库安全·数据加密
- Medium网友开发了一款应用程序 让学习算法和数据结构变得更有趣
- 数据库安全·Token 认证
- 数据库安全·用户/角色认证
- 防止在训练模型时信息丢失 用于TensorFlow、Keras和PyTorch的检查点教程
- 帝国cms如何调用栏目别名作为分类标题?[!--classname--]标签不能用
- 高级软件工程师(面试题)
- 高级软件工程师 2016-9月更新
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 从0到1开发测试平台(六)增加登录接口
- FFmpeg 开发(04):FFmpeg + OpenGLES 实现音频可视化播放
- 【剑指offer】31.整数中1出现的次数
- 【剑指offer】35.数组中的逆序对
- 针对用友ic读卡器 web 脚本的重构
- NIO实现多人聊天室
- NIO与零拷贝
- c++奇淫技巧之完美转发
- 控制论与科学方法论-控制与反馈
- 使用docker测试静态网站
- 看看这样的程序排错经历是否似曾相识
- Mysql索引解密(上)
- Kubernetes Dashboard 可视化插件部署 博主亲自实践可用
- Jmeter接口压测示例
- Kubernetes_v1.18.2环境搭建 博主亲自实践可用