博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 8. String to Integer (atoi)
阅读量:4940 次
发布时间:2019-06-11

本文共 1181 字,大约阅读时间需要 3 分钟。

思路:

1.首先去掉字符串首尾的空格

2.判断字符串的长度

3.将其转换为字符数组

4.判断首字符是否为“-” “+” 并记录符号

5.判断是否能转换为数字,不能的话则返回sign * result

能转换则 result = result * 10 + digit;此时则需要判断result与Integer.MAX_VALUE的大小关系

需要注意的一点是 因为先进行求和操作,再判断其与Integer.MAX_VALUE的大小关系,如果result为int类型,则会导致溢出,从而产生错误的结果。因此一开始将result定义为double类型,但返回时则需进行强制转换。

class Solution {  public int myAtoi(String str) {    if (str == null) return 0;    str = str.trim();  //去掉字符串首尾的空格     if (str.length() == 0) return 0;    char[] chArray = str.toCharArray(); //toCharArray():将字符串对象中的字符转换为一个字符数组    int sign = 1;    int i = 0;    if (chArray[0] == '+') {      sign = 1;      i++;    } else if (chArray[0] == '-') {      sign = -1;      i++;    }    double result = 0;  //使用int会溢出 使用double则不会    while (i < chArray.length) {      int digit = chArray[i] - '0';      if (digit < 0 || digit > 9) {        return (int)(sign * result);      }            result = result * 10 + digit;        if ((result >= Integer.MAX_VALUE && sign == 1) || (result >= Integer.MAX_VALUE + 1  && sign == 0)) {        return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;      }      i++;    }    return (int)(sign * result);  }}

 

转载于:https://www.cnblogs.com/yanhowever/p/9951226.html

你可能感兴趣的文章
Bootstrap简单介绍
查看>>
iOS Touch ID 身份认证
查看>>
springboot 注解笔记
查看>>
图解HTTP---------------------------------------4
查看>>
hibernate实体类配置文件问题(字段使用默认值)
查看>>
rsync+inotify脚本
查看>>
LeetCode 860.柠檬水找零(C++)
查看>>
文件上传
查看>>
(Problem 92)Square digit chains
查看>>
HDU 2612 Find a way BFS,防止超时是关键
查看>>
0809
查看>>
FineUIPro v5.2.0已发布(jQuery升级,自定义图标,日期控件)
查看>>
HTML页和ashx之间关系的一点小应用
查看>>
智能合约安全前传-基础知识入门
查看>>
Myeclipse反编译插件
查看>>
Dubbo和Zookerper的关系
查看>>
centos 5 系统安装MYSQL5.7
查看>>
docker数据卷(转)
查看>>
地图定位及大头针设置
查看>>
oracle常用小知识点
查看>>