题目:

给定一个字符串 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;}

将整数字符串转成整数值相关推荐

  1. 字符串之将整数字符串转成整数值

    题目: 字符串之将整形字符串转成整数值,并且属于32位整数范围 例如: str = "123"  返回 123 str = "012"  不符合书写习惯,所以返 ...

  2. 将整型字符串转成整数值

    题目:给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0. 举例: str = "123",返回123.  st ...

  3. java 对字符串中的数值排序

    对"34 9 -7 12 67 25"这个字符串中的数值从小到大排序! 介绍几个快捷键:for+"alt+/"快速写一个for循环     选中某一个小写单词 ...

  4. 判断一个字符串是否是数值

    剑指 Offer 20. 表示数值的字符串 难度中等193收藏分享切换为英文接收动态反馈 请实现一个函数用来判断字符串是否表示数值(包括整数和小数). 数值(按顺序)可以分成以下几个部分: 若干空格 ...

  5. matlab 数值格式转换,Matlab字符串转换及数值格式转换

    Matlab字符串转换及数值格式转换 字符串转换函数 abs 字符串到ASCII转换 dec2hex 十进制数到十六进制字符串转换 fprintf 把格式化的文本写到文件中或显示屏上 hex2dec ...

  6. Java判断字符串是否是数值

    判断一个字符串是否是数值,可以用正则表达式来判断.更简单的方法是把字符串转换成Float或者Double,然后捕捉NumberFormatException错误,如果有错误,就说明不是一个数值,如果没 ...

  7. java字符排序_Java实现对字符串中的数值进行排序操作示例

    本文实例讲述了Java实现对字符串中的数值进行排序操作.分享给大家供大家参考,具体如下: 问题: 对"34 9 -7 12 67 25"这个字符串中的数值从小到大排序! 解决方法: ...

  8. 数字字符串转换成数值

    留有一个作业,题如下: 完成字符串"12345"转成整数12345 那这个代码,我们怎么实现? 既然学习了字符数组,这个问题就是很简单的问题了.我们可以看一下思路: 首先,它是字符 ...

  9. R语言dplyr包使用recode函数进行数据列内容编码、转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值)

    R语言dplyr包使用recode函数进行数据列内容编码.转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值) 目录

最新文章

  1. 打开CMDLINE中的 ” earlyprink “ 参数
  2. Optical_Flow(3)
  3. 日本惊现神操作!偷偷研究飞刀方程致使厕所爆炸......
  4. 黑科技轮胎:有能发电的,脑洞简直不要太大...
  5. Linux 命令行输入
  6. 蓝桥杯c语言a组省赛试题及答案,2016-蓝桥杯-省赛-C语言大学A组全部真题.doc
  7. 虚拟机Centos7配置网络
  8. ac86u原厂固件去广告_苹果发布最新固件IOS12.3.2,估计不修正你的手机
  9. 中数据库url怎么写_WIN10下怎么找到MYSQL数据库中存储数据的位置
  10. 麻瓜编程python_麻瓜编程 - 主页
  11. 当年的好记星、诺亚舟都去哪了?
  12. Android Gradle Build Error:Some file crunching failed, see logs for details解决办法
  13. 麻省理工学院——人工智能公开课06
  14. 入坑MATLAB必会的吐血总结
  15. TED演讲:404找不到页面的故事
  16. 如何知道php是32位还是64位,怎么看电脑是32位还是64位详细介绍
  17. 消息模型与生成pdf
  18. 关于oem7grub 0.4.4 2009-11-18,memory:639k/30 的问题的解决
  19. 预警信息发布程序设计
  20. 不软的科幻——源代码浅析

热门文章

  1. Caesar Cipher(线段树维护哈希)
  2. 最新彩虹DS版6.1 PJ版源码
  3. Oracle系统服务
  4. repo的入门和使用
  5. SCI投稿全攻略—起飞站
  6. 为什么Google Home将成为Amazon Echo最可怕的噩梦?
  7. Simulink Simscape电路仿真初探(附MATLAB R2021a安装包)
  8. java多态实现的三种形式,逆袭面经分享
  9. 【踩坑专栏】Field XXX required a bean of type ‘xx.xx.XXX‘ that could not be found.
  10. 标准程序流程图的符号及使用约定