将整数字符串转成整数值
题目:
给定一个字符串 str,如果str符合日常书写的整数形式,并且属于 32 位整数的范围,返回 str 所代表的整数值,否则返回 0 。
举例:
str = "123" 返回 123
str = "023" 返回 23
str = "2147483647" 返回 2147483647
str = "2147483648" 返回0,因为溢出了
str = "-123" 返回 -123
思路:
检查是否合法:
public static boolean isValid(char[] chas) {//排除不以符号和数字开头的if (chas[0] != '-' && (chas[0] < '0' || chas[0] > '9')) {return false;}//排除 ‘-’ 和 ‘-023’ 这种的if (chas[0] == '-' && (chas.length == 1 || chas[1] == '0')) {return false;}//排除以0开头的if (chas[0] == '0' && chas.length > 1) {return false;}//检查字符串其他位置是不是都是数字 如果有不是的返回 falsefor (int i = 1; i < chas.length; i++ ) {if (chas[i] < '0' || chas[i] > '9') {return false;}}return true;}
如果str不符合日常书写的整数形式,根据题目要求,直接返回0即可。
如果符合,进行如下转换过程:
不管是正数还是负数,转换过程都以 负数的形式出现,然后根据前面的 '-' ,如果有负号,结果保持不变,如果没有'-',去掉结果前面的负号。
例如:
str = "123" 转换为结果时 -123,posi= true,最后返回 123
str = "-123" 转换为结果时 -123,posi= false,最后返回 -123
判断溢出问题:
public static int convert(String str) {if (str == null || str.equals("")) {return 0;}char[] chas = str.toCharArray();if (!isValid(chas)) {return 0;}boolean posi = chas[0] == '-' ? false : true;int minq = Integer.MIN_VALUE / 10;int minr = Integer.MAX_VALUE % 10;int res = 0;int cur = 0;//如果是以 ‘-’ 开头,就从 1 位置遍历,如果不是,就从0位置开始遍历for (int i = posi ? 0 : 1; i < chas.length; i++) {//拿到当前字符的负数形式cur = '0' - chas[i];//判断是否溢出if ((res < minq) || (res == minq && cur < minr)) {return 0;}res = res * 10 + cur;}if(posi && res == Integer.MIN_VALUE) {return 0;}return posi ? -res : res;}
将整数字符串转成整数值相关推荐
- 字符串之将整数字符串转成整数值
题目: 字符串之将整形字符串转成整数值,并且属于32位整数范围 例如: str = "123" 返回 123 str = "012" 不符合书写习惯,所以返 ...
- 将整型字符串转成整数值
题目:给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0. 举例: str = "123",返回123. st ...
- java 对字符串中的数值排序
对"34 9 -7 12 67 25"这个字符串中的数值从小到大排序! 介绍几个快捷键:for+"alt+/"快速写一个for循环 选中某一个小写单词 ...
- 判断一个字符串是否是数值
剑指 Offer 20. 表示数值的字符串 难度中等193收藏分享切换为英文接收动态反馈 请实现一个函数用来判断字符串是否表示数值(包括整数和小数). 数值(按顺序)可以分成以下几个部分: 若干空格 ...
- matlab 数值格式转换,Matlab字符串转换及数值格式转换
Matlab字符串转换及数值格式转换 字符串转换函数 abs 字符串到ASCII转换 dec2hex 十进制数到十六进制字符串转换 fprintf 把格式化的文本写到文件中或显示屏上 hex2dec ...
- Java判断字符串是否是数值
判断一个字符串是否是数值,可以用正则表达式来判断.更简单的方法是把字符串转换成Float或者Double,然后捕捉NumberFormatException错误,如果有错误,就说明不是一个数值,如果没 ...
- java字符排序_Java实现对字符串中的数值进行排序操作示例
本文实例讲述了Java实现对字符串中的数值进行排序操作.分享给大家供大家参考,具体如下: 问题: 对"34 9 -7 12 67 25"这个字符串中的数值从小到大排序! 解决方法: ...
- 数字字符串转换成数值
留有一个作业,题如下: 完成字符串"12345"转成整数12345 那这个代码,我们怎么实现? 既然学习了字符数组,这个问题就是很简单的问题了.我们可以看一下思路: 首先,它是字符 ...
- R语言dplyr包使用recode函数进行数据列内容编码、转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值)
R语言dplyr包使用recode函数进行数据列内容编码.转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值) 目录
最新文章
- 打开CMDLINE中的 ” earlyprink “ 参数
- Optical_Flow(3)
- 日本惊现神操作!偷偷研究飞刀方程致使厕所爆炸......
- 黑科技轮胎:有能发电的,脑洞简直不要太大...
- Linux 命令行输入
- 蓝桥杯c语言a组省赛试题及答案,2016-蓝桥杯-省赛-C语言大学A组全部真题.doc
- 虚拟机Centos7配置网络
- ac86u原厂固件去广告_苹果发布最新固件IOS12.3.2,估计不修正你的手机
- 中数据库url怎么写_WIN10下怎么找到MYSQL数据库中存储数据的位置
- 麻瓜编程python_麻瓜编程 - 主页
- 当年的好记星、诺亚舟都去哪了?
- Android Gradle Build Error:Some file crunching failed, see logs for details解决办法
- 麻省理工学院——人工智能公开课06
- 入坑MATLAB必会的吐血总结
- TED演讲:404找不到页面的故事
- 如何知道php是32位还是64位,怎么看电脑是32位还是64位详细介绍
- 消息模型与生成pdf
- 关于oem7grub 0.4.4 2009-11-18,memory:639k/30 的问题的解决
- 预警信息发布程序设计
- 不软的科幻——源代码浅析
热门文章
- Caesar Cipher(线段树维护哈希)
- 最新彩虹DS版6.1 PJ版源码
- Oracle系统服务
- repo的入门和使用
- SCI投稿全攻略—起飞站
- 为什么Google Home将成为Amazon Echo最可怕的噩梦?
- Simulink Simscape电路仿真初探(附MATLAB R2021a安装包)
- java多态实现的三种形式,逆袭面经分享
- 【踩坑专栏】Field XXX required a bean of type ‘xx.xx.XXX‘ that could not be found.
- 标准程序流程图的符号及使用约定