实现一个atoi函数,使其能将字符串转成整数,根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或负号时,则将该符号与后面尽可能多的连续数字组合起来,作为该整数的正负号。之后可能有多余字符,可以被忽略。不能有效转换,返回0.

题解

没有什么优解,只能根据示例和题意不断做判断。先清除空格,后判断数字,最后小心数字溢出。

我的解法代码
public class Solution {

    public int myAtoi(String str) {
int len = str.length(); // 去除前导空格
int index = 0;
while (index < len) {
if (str.charAt(index) != ' ') {
break;
}
index++;
} if (index == len) {
return 0;
} // 第 1 个字符如果是符号,判断合法性,并记录正负
int sign = 1;
char firstChar = str.charAt(index);
if (firstChar == '+') {
index++;
sign = 1;
} else if (firstChar == '-') {
index++;
sign = -1;
} // 不能使用 long 类型,这是题目说的
int res = 0;
while (index < len) {
char currChar = str.charAt(index);
// 判断合法性
if (currChar > '9' || currChar < '0') {
break;
} // 题目中说:环境只能存储 32 位大小的有符号整数,因此,需要提前判断乘以 10 以后是否越界
if (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && (currChar - '0') > Integer.MAX_VALUE % 10)) {
return Integer.MAX_VALUE;
}
if (res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && (currChar - '0') > -(Integer.MIN_VALUE % 10))) {
return Integer.MIN_VALUE;
} // 每一步都把符号位乘进去
res = res * 10 + sign * (currChar - '0');
index++;
} return res;
}
}

最新文章

  1. CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.
  2. IOS导航栏颜色渐变与常用属性
  3. C/C++读入一行不定个数的整数
  4. JS滚轮事件封装
  5. Render OpenCascade Geometry Curves in OpenSceneGraph
  6. C#MongoDB使用实践
  7. SQL存储过程概念剖析
  8. c++中的 extern &quot;C&quot;(转载)
  9. Android监听事件
  10. Acdream a + b
  11. [ios2]ios系统中各种设置项的url链接
  12. Struts2-3.struts.xml的action可以简写
  13. 五、 创建连接串连接本地数据库(ASP.NET MVC5 系列)
  14. css3转盘抽奖
  15. angular或者js如何确定选中ul中的哪几个li
  16. SSM登陆拦截器实现
  17. mongodb集群故障转移实践
  18. bootstrap-datepicker 开始时间-结束时间 thinkphp
  19. 【three.js练习程序】旋转物体自身
  20. .NetCore使用FluentValidation实现友好验证提示

热门文章

  1. 类型不匹配 java.lang.IllegalArgumentException : argument type mismatch
  2. python学习HTML之CSS
  3. 4_6 师兄帮帮忙(UVa12412)(选做)
  4. Django框架中的Cookie和Session
  5. @ModelAttribute与@RequestBody的区别
  6. Vim:Vim入门级配置
  7. 连接数据库的url
  8. intellij idea 整合springboot和mybatis
  9. JavaScript的发展史
  10. AI基础概念