如何建立网站自己做站长,colorway wordpress,浙江平台网站建设设计,从零做网站题目
写一个函数 StrToInt#xff0c;实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先#xff0c;该函数会根据需要丢弃无用的开头空格字符#xff0c;直到寻找到第一个非空格的字符为止。
当我们寻找到的第一个非空字符为正或者负号时#…题目
写一个函数 StrToInt实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先该函数会根据需要丢弃无用的开头空格字符直到寻找到第一个非空格的字符为止。
当我们寻找到的第一个非空字符为正或者负号时则将该符号与之后面尽可能多的连续数字组合起来作为该整数的正负号假如第一个非空字符是数字则直接将其与之后连续的数字字符组合起来形成整数。
该字符串除了有效的整数部分之后也可能会存在多余的字符这些字符可以被忽略它们对于函数不应该造成影响。
注意假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时则你的函数不需要进行转换。
在任何情况下若函数不能进行有效的转换时请返回 0。
说明
假设我们的环境只能存储 32 位大小的有符号整数那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围请返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。
来源力扣LeetCode 链接https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
示例 方法
思路与图片来自面试题67. 把字符串转换成整数数字越界处理清晰图解 - 把字符串转换成整数 - 力扣LeetCode
1. 删除首尾空格
2. 符号位用int 存储如果是‘’那就设为1如果是‘-’那就设为-1最后将符号位与数字位相乘即可。
3. 遇到首个非数字位直接返回
4. 数字位 4.1字符转数字 “此数字的 ASCII 码” 与 “ 00 的 ASCII 码” 相减即可 4.2 数字拼接 若从左向右遍历数字设当前位字符为 c 当前位数字为 x 数字结果为 res 则数字拼接公式为 数字越界处理 代码
class Solution {public int strToInt(String str) {//1.去首尾空格转成字符数组char[] c str.trim().toCharArray();if(c.length 0) return 0;int res 0, bndry Integer.MAX_VALUE / 10;int i 1, sign 1;/*** 如果第一个是负号 就让sign -1* 否则如果 既不是正号 也不是负号那就说明 无符号* 无符号的情况 从0开始到尾进行扫描* 有符号的情况 从1开始到尾进行扫描*/if(c[0] -) sign -1;else if(c[0] ! ) i 0;//扫描for(int j i; j c.length; j) {//遇上非数字if(c[j] 0 || c[j] 9) break;//判断是否越界越界就返回边界值if(res bndry || res bndry c[j] 7) return sign 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;//不越界就继续拼接res res * 10 (c[j] - 0);}//最后将符号和数字拼接起来return sign * res;}
} 心得
自己写的时候没把握住题目的难点直接就是将字符串分割好之后直接String类型强制转换成int类型就返回了忽略了数字最大的情况越界的情况看了题解才知道原来这道题的难点不在字符串的处理难点应该是在怎么拼接数字怎么判断越界。