No.008 String to Integer (atoi)
时间:2022-04-29
本文章向大家介绍No.008 String to Integer (atoi),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
8. String to Integer (atoi)
- Total Accepted: 112863
- Total Submissions: 825433
- Difficulty: Easy
Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
思路:
本题的难度倒不大,主要是考察的细心程度和对和各种可能的情况是否考虑清楚。题主也是通过三四次提交失败之后才accepted。
主要考虑的情况有以下几种:
- 空串或str == null
- 字符串开头有连续的空格
- 非空格的第一个字符为“+”或“-”或0或其他情况
- 字符串长度可能非常长,甚至转换过来之后超过long类型的范围
- 当遇到非正常字符时,输出之前的结果,eg:-123a245,输出结果为-123
- 对于输出结果超出int类型范围的输出边界值,也就是说输出结果大于int类型最大值,则输出Integer.MAX_VALUE,当输出结果小于int类型最小值时,输出Integer.MIN_VALUE
暂时只考虑了这么多种吧,代码如下:
1 public int myAtoi(String str) {
2 //对null和空串情况进行判断
3 if(str == null || str.length() == 0){
4 return 0 ;
5 }
6 //截除字符串的前面的空格
7 char [] arr = str.trim().toCharArray() ;
8 int temp ; //乘子,表示正负
9 int index ; //表示最高位开始的index
10 //判断非空有效位的首位的情况
11 if((arr[0] == '-') && (arr.length > 1)){
12 temp = -1 ;
13 index = 1 ;
14 }else if((arr[0] <= '9') && (arr[0] >= '0')){
15 temp = 1 ;
16 index = 0 ;
17 }else if((arr[0] == '+') && (arr.length > 1)){
18 temp = 1 ;
19 index = 1 ;
20 }else{
21 return 0 ;
22 }
23
24 long res = 0 ;
25 for(int i = index ; i < arr.length ; i++){
26 /*判断每一位是否是数字,不是则直接截断已经处理的结果
27 * 考虑到int类型的最长有效位数是10位,加上符号位11位,这里再附加一位保险位,
28 * 超过12位的肯定超出了有效范围我们不继续处理后面的,直接截断*/
29 if((arr[i] <= '9') && (arr[i] >= '0' && i < 13)){
30 res = res*10 + temp*(arr[i]-'0') ;
31 }else{
32 break ;
33 }
34 }
35 //判断输出的结果是否超出int类型的范围
36 if(res > Integer.MAX_VALUE ){
37 return Integer.MAX_VALUE ;
38 }else if(res < Integer.MIN_VALUE){
39 return Integer.MIN_VALUE ;
40 }else{
41 return (int)res ;
42 }
43 }
- 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 数组属性和方法
- 高维数据 | R语言数据可视化之日历图
- 打卡群刷题总结0804——二叉树的中序遍历
- 基础知识 | R语言数据管理之SQL语句
- 文本挖掘| 某作者文章的词频统计排序
- spring注解配置之@Configuration
- TS核心知识点总结及项目实战案例分析
- 用Python开发 写个消消乐小游戏
- 原理+代码|Python实战多元线性回归模型
- nestjs+vue+ts打造一个酷炫的星空聊天室(含完整数据库设计)
- JUnit 5基础指南
- 记录一则expdp任务异常处理案例
- Jenkins打造多分支流水线指南
- Spring中的设计模式
- java单元/集成测试中使用Testcontainers
- AOP编程简介及其在Spring框架中的使用