博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetCode 8 String to Integer
阅读量:5959 次
发布时间:2019-06-19

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

第一时间发布

题目描述(中等难度)

将一个字符串转为整型。

这道题,难度其实不大,和有很多重合的地方。整体的思路就是遍历字符串,然后依次取出一个字符就可以了。无非是考虑一些特殊情况,还有就是理解题目意思。

经过多次试错,题目的意思是这样的。

从左遍历字符串,可以遇到空格,直到遇到 ' + ' 或者数字或者 ' - ' 就表示要转换的数字开始,如果之后遇到除了数字的其他字符(包括空格)就结束遍历,输出结果,不管后边有没有数字了,例如 " - 32332ada2323" 就输出 "- 32332"。

如果遇到空格或者 ' + ' 或者数字或者 ' - ' 之前遇到了其他字符,就直接输出 0 ,例如 " we1332"。

如果转换的数字超出了 int ,就返回 intMax 或者 intMin。

public int myAtoi(String str) {		int sign = 1;		int ans = 0, pop = 0;		boolean hasSign = false; //代表是否开始转换数字		for (int i = 0; i < str.length(); i++) {			if (str.charAt(i) == '-' && !hasSign) {				sign = -1;				hasSign = true;				continue;			}			if (str.charAt(i) == '+' && !hasSign) {				sign = 1;				hasSign = true;				continue;			}			if (str.charAt(i) == ' ' && !hasSign) {				continue;			}			if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {				hasSign = true;				pop = str.charAt(i) - '0';                 //和上道题判断出界一个意思只不过记得乘上 sign 。				if (ans * sign > Integer.MAX_VALUE / 10 || (ans * sign == Integer.MAX_VALUE / 10 && pop * sign > 7))					return 2147483647;				if (ans * sign < Integer.MIN_VALUE / 10 || (ans * sign == Integer.MIN_VALUE / 10 && pop * sign < -8))					return -2147483648;				ans = ans * 10 + pop;			} else {				return ans * sign;			}		}		return ans * sign;	}复制代码

时间复杂度:O(n),n 是字符串的长度。

空间复杂度:O(1)。

总结

这道题让自己有点感到莫名其妙,好像没有 get 到出题人的点???

转载地址:http://fruax.baihongyu.com/

你可能感兴趣的文章
【基础进阶】URL详解与URL编码
查看>>
[家里蹲大学数学杂志]第425期一个定积分的计算
查看>>
[禅悟人生]责任是源自内心的自觉
查看>>
Navicat for Oracle实现连接Oracle
查看>>
windows下mysql表名不自动转换小写配置
查看>>
GitHub 不让盗版 Windows 用户登录?纯属段子
查看>>
通过shell脚本来得到不稳定的执行计划
查看>>
ASP.NET Web API 应用教程(一) ——数据流使用
查看>>
Python系列干货之Python与设计模式!
查看>>
C# iTextSharp 生成 PDF
查看>>
【中亦安图】Systemstate Dump分析经典案例(8)
查看>>
Template Method(模板方法)模式
查看>>
Dynamic proxy (good-原创)
查看>>
【Redis】Java之Redis工具类
查看>>
算法系列15天速成——第十一天 树操作(上)
查看>>
微软未公开存储过程及有用的函数
查看>>
JAVA缓存技术之EhCache(转)
查看>>
Linux磁盘分区,目录树,文件系统的关系(转)
查看>>
oracle 11g impdp时 报ORA-12899(转)
查看>>
SQL Server高可用——日志传送(4-1)——概论
查看>>