【LeetCode】4月3日打卡-Day19-字符串转整数
描述
请你来实现一个 atoi 函数,使其能将字符串转换成整数。
首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:
如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。
假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。
该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。
注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换,即无法进行有效转换。
在任何情况下,若函数不能进行有效的转换时,请返回 0 。
提示:
本题中的空白字符只包括空格字符 ’ ’ 。
假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,请返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。
示例 1:
输入: “42”
输出: 42
示例 2:
输入: " -42"
输出: -42
解释: 第一个非空白字符为 ‘-’, 它是一个负号。
我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。
示例 3:
输入: “4193 with words”
输出: 4193
解释: 转换截止于数字 ‘3’ ,因为它的下一个字符不为数字。
示例 4:
输入: “words and 987”
输出: 0
解释: 第一个非空字符是 ‘w’, 但它不是数字或正、负号。
因此无法执行有效的转换。
示例 5:
输入: “-91283472332”
输出: -2147483648
解释: 数字 “-91283472332” 超过 32 位有符号整数范围。
因此返回 INT_MIN (−231) 。
题解
class Solution {public int myAtoi(String str) {char[] arr = str.toCharArray();int len = arr.length;int i = 0;while(i < len && arr[i] == ' '){i++;}if(i == len) return 0;int flag = 0;if(arr[i] == '-'){flag = -1;i++;} else if(arr[i] == '+'){i++;} else if(!Character.isDigit(arr[i])){return 0;}int ans = 0;while(i < len && Character.isDigit(arr[i])){int digit = arr[i] - '0';// 如果不越界 ans = ans * 10 + digit // 要求 ans < Integer.MAX_VALUEif(ans > (Integer.MAX_VALUE - digit) / 10){return flag == -1? Integer.MIN_VALUE: Integer.MAX_VALUE;}ans = ans * 10 + digit;i++;}return flag == -1? -ans: ans;}
}
【LeetCode】4月3日打卡-Day19-字符串转整数相关推荐
- leetcode.cn 2022年11月4日 打卡题 754. 到达终点数字【一元二次方程解法,时间复杂度O(1)】
leetcode 2022年11月4日 打卡题 754. 到达终点数字 写在前面 首先感谢 @子不语 大佬发布的一元二次方程代码实现的启发.题解链接:子不语-754. 到达终点数字 本文侧重梳 ...
- 2020年6月23日打卡
打卡 2020年6月23日 计划与安排 Leetcode 67. 二进制求和 学习笔记 这位先生我能占用您一点时间吗-- 计划与安排 预期每天在博客中叙述如下内容: 每日做leetcode的感悟与题解 ...
- 3月19日 打卡
一周第一次课(3月19日) 1.1 学习之初 1.2 约定 1.3 认识Linux 1.4 安装虚拟机 1.5 安装centos7 学习Liux 真的只是一场缘分,之前我只知道她是一个操作系统.但我重 ...
- 【LeetCode】3月17日打卡-Day2
题1 拼写单词 描述 给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars. 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串 ...
- 【LeetCode】4月5日打卡-Day21-最大子序和问题
描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续 ...
- 【LeetCode】4月4日打卡-Day20-接雨水
描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下, ...
- 【LeetCode】4月1日打卡-Day17-括号匹配/嵌套深度
题1 有效括号的嵌套深度 题解 要求划分出使得最大嵌套深度最小的分组,我们首先得知道如何计算嵌套深度.我们可以通过栈实现括号匹配来计算: 维护一个栈 s,从左至右遍历括号字符串中的每一个字符: 如果当 ...
- 【LeetCode】4月2日打卡-Day18-矩阵操作
题1 生命游戏 描述 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞.每 ...
- 【LeetCode】3月31日打卡-Day16-数组排序算法汇总
排序算法一览 快排 插入排序 希尔排序 桶排序 计数排序 归并排序 桶排序 class Solution {public int[] sortArray(int[] nums) {if(nums.le ...
最新文章
- RHEL7OSP-6.0的openstack云主机发放
- Linux多线程同步的几种方式
- spark集群运行模式理解
- VMware 虚拟机(linux)增加根目录磁盘空间
- 如何:在Maven项目(JUnit,Mockito,Hamcrest,AssertJ)中测试依赖项
- word模板生成word报表文档
- 如果风 知道 ... 如果云 知道 ...
- 山东省计算机春季高考大纲,2017年山东春季高考专业知识考试大纲.doc
- svn在linux下的使用(svn命令)[转]
- UE4之Obj模型解构解析
- snmpwalk 获取端口流量_通过snmpwalk命令计算接口速率
- 恒流源驱动电路 随笔一
- 2:jdbc 连接步骤及基本用法
- GetShell的姿势总结
- 历代iPhone的分辨率
- Xftp无法与192.168.xx.xx连接 SSH服务器拒绝了密码。请再试一次。
- 碰壁记录(持续更新)
- 西门子博途v16系统要求_西门子博途技术研讨
- 你的Web3域名,价值究竟何在?
- Amber中对体系的距离角度和二面角加以限制
热门文章
- 每日一题(25)—— 自加++
- nyoj744 蚂蚁的难题(-)
- 计算机语言恢复,win10系统找回消失不见语言栏的恢复方法
- 论文阅读 - CRNN
- LeetCode 1760. 袋子里最少数目的球(二分查找)
- LeetCode MySQL 1241. 每个帖子的评论数
- LeetCode 1474. 删除链表 M 个节点之后的 N 个节点
- LeetCode 609. 在系统中查找重复文件(哈希)
- python tkinter选择路径控件_如何使用tkinter在Python中选择目录并存储位置
- python中response.text_Sanic response text() 函数用法和示例