崇义县网站建设,品牌网图片新闻2003年下一条文章,python可以做网站前端,专业软文代写请你来实现一个 myAtoi(string s) 函数#xff0c;使其能将字符串转换成一个 32 位有符号整数#xff08;类似 C/C 中的 atoi 函数#xff09;。
函数 myAtoi(string s) 的算法如下#xff1a;
读入字符串并丢弃无用的前导空格 检查下一个字符#xff08;假设还未到字符…请你来实现一个 myAtoi(string s) 函数使其能将字符串转换成一个 32 位有符号整数类似 C/C 中的 atoi 函数。
函数 myAtoi(string s) 的算法如下
读入字符串并丢弃无用的前导空格 检查下一个字符假设还未到字符末尾为正还是负号读取该字符如果有。 确定最终结果是负数还是正数。 如果两者都不存在则假定结果为正。 读入下一个字符直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些数字转换为整数即“123” - 123 “0032” - 32。如果没有读入数字则整数为 0 。必要时更改符号从步骤 2 开始。 如果整数数超过 32 位有符号整数范围 [−2^31, 2^31 − 1] 需要截断这个整数使其保持在这个范围内。具体来说小于 −2^31 的整数应该被固定为 −2^31 大于 2^31 − 1 的整数应该被固定为 2^31 − 1 。 返回整数作为最终结果。 注意
本题中的空白字符只包括空格字符 ’ ’ 。 除前导空格或数字后的其余字符串外请勿忽略 任何其他字符。
示例 1
输入s “42” 输出42 解释加粗的字符串为已经读入的字符插入符号是当前读取的字符。 第 1 步“42”当前没有读入字符因为没有前导空格 ^ 第 2 步“42”当前没有读入字符因为这里不存在 ‘-’ 或者 ‘’ ^ 第 3 步“42”读入 “42” ^ 解析得到整数 42 。 由于 “42” 在范围 [-2^31, 2^31 - 1] 内最终结果为 42 。 示例 2
输入s -42 输出-42 解释 第 1 步 -42读入前导空格但忽视掉 ^ 第 2 步 -42读入 ‘-’ 字符所以结果应该是负数 ^ 第 3 步 -42读入 “42” ^ 解析得到整数 -42 。 由于 “-42” 在范围 [-2^31, 2^31 - 1] 内最终结果为 -42 。 示例 3
输入s “4193 with words” 输出4193 解释 第 1 步“4193 with words”当前没有读入字符因为没有前导空格 ^ 第 2 步“4193 with words”当前没有读入字符因为这里不存在 ‘-’ 或者 ‘’ ^ 第 3 步“4193 with words”读入 “4193”由于下一个字符不是一个数字所以读入停止 ^ 解析得到整数 4193 。 由于 “4193” 在范围 [-2^31, 2^31 - 1] 内最终结果为 4193 。
提示
0 s.length 200 s 由英文字母大写和小写、数字0-9、’ ‘、’‘、’-’ 和 ‘.’ 组成。
解题思路
先去掉字符串两边的空格然后判断符号最后读取数字
class Solution {public int myAtoi(String s) {ss.trim();//去掉前后的空格if(s.length()0) {return 0;}//index遍历字符串中字符的位置res最终结果sign符号1是正数-1是负数默认为正数int index0,sign1,res0,lens.length();if(s.charAt(index)-||s.charAt(index)) {signs.charAt(index)?1:-1;}for(;indexs.length();index) {int digits.charAt(index)-0;//按照题中的要求读入下一个字符直到到达下一个非数字字符或到达输入的结尾。//字符串的其余部分将被忽略。如果读取了非数字后面的都要忽略if(digit0||digit9) {break;}//越界处理if(resInteger.MAX_VALUE/10||(resInteger.MAX_VALUE/10digitInteger.MAX_VALUE%10)) {return sign1?Integer.MAX_VALUE:Integer.MIN_VALUE;}else {res10*resdigit;}}return res*sign;}
}