Leetcode 8. 字符串转换整数

程序员 2024-9-26 04:29:10 107 0 来自 中国
题目要求

请你来实现一个 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
示例 2:
输入:s = "   -42"
输出:-42
示例 3:
输入:s = "4193 with words"
输出:4193
提示:

  • 0 <= s.length <= 200
  • s 由英文字母(大写和小写)、数字(0-9)、' '、'+'、'-' 和 '.' 构成
解题思绪

这道题用简单的模拟法来解。
紧张步调如下:

  • 借助trim方法,去除s前后的空格
  • 判定s的第一位元素,是否为+和-,从而得到效果是正数照旧负数
  • 循环遍历s中的全部数字

    • 先判定加被骗前数字是否会越界,假如会越界,则直接返回Integer.MAX_VALUE或Integer.MIN_VALUE
    • 计算res值
    • index++

  • 返回正负号标志位 * res
Java代码
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 18:26, Processed in 0.148405 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表