每日一题---8. 字符串转换整数 (atoi)[力扣][Go]

简介: 每日一题---8. 字符串转换整数 (atoi)[力扣][Go]

题目描述

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

读入字符串并丢弃无用的前导空格

检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。

读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。

将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。

如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1 。

返回整数作为最终结果。

注意:

本题中的空白字符只包括空格字符 ’ ’ 。

除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

解题代码

func myAtoi(s string) int {
  sum := ""
  // 指定下标
  index := 1
  s = strings.Trim(s," ")
  // 为空返回0
  if s == "" {
    return 0
  }
  // 获取字符长度,减少函数执行次数
  n := len(s)
  // 判断符号
  if (s[0] < 58 && s[0] >47) || s[0] == 43 || s[0] == 45 {
    sum += string(s[0])
  } else {
    return 0
  }
  for index < n {
    // 判断是否为数字
    if s[index] < 58 && s[index] >47 {
      sum += string(s[index])
      index ++
    } else {
      break
    }
  }
  num, _ := strconv.Atoi(sum)
  // 范围判定
  if num < -2147483648 {
    return -2147483648
  }
  if num >  2147483647 {
    return 2147483647
  }
  return num
}

提交结果

感悟

这个题真是太刺激了,连续提交好几次才通过,判空,判断符号什么的,不过还好,能靠Go里函数来做些简单的操作。

多尝试几次,自己磨磨也还行,就是觉的这个题有些许的多余,因为库里本就有Atoi函数了,也好用。


相关文章
|
13天前
|
存储
LeetCode整数反转
解决LeetCode上的整数反转问题的几种方法,包括错误的方法和优化后的解决方案,以及如何避免反转后的整数超出32位有符号整数范围的问题。
29 1
|
2月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
99 2
|
15天前
【LeetCode】整数翻转
【LeetCode】整数翻转
12 1
|
1月前
|
Go
Go字节数组与字符串相互转换
Go字节数组与字符串相互转换
33 3
|
13天前
|
存储 C++
Leetcode第十二题(整数转罗马数字)
LeetCode第12题“整数转罗马数字”的解题方法,包括罗马数字的基本规则和特殊规则,以及如何使用C++实现整数到罗马数字的转换。
12 0
|
13天前
|
C++
Leetcode第十三题(罗马数字转整数)
这篇文章介绍了LeetCode第13题“罗马数字转整数”的解题方法,通过一个C++的类`Solution`中的`romanToInt`函数来实现,该函数使用哈希表和遍历字符串的方法,根据罗马数字的规则将输入的罗马数字字符串转换为对应的整数值。
37 0
|
13天前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
12 0
|
1月前
|
存储 Go
go语言字符串变小写
go语言字符串变小写
|
2月前
|
算法
LeetCode第12题目整数转罗马数字
该文章介绍了 LeetCode 第 12 题整数转罗马数字的解法,通过使用 TreeMap 按照整数从大到小排序,先使用大的罗马数字表示整数,再用小的,核心是先表示完大的罗马数字,想通此点该题较简单。
LeetCode第12题目整数转罗马数字
|
2月前
|
算法
LeetCode第8题字符串转换整数 (atoi)
该文章介绍了 LeetCode 第 8 题字符串转换整数 (atoi)的解法,需要对字符串进行格式解析与校验,去除前导空格和处理正负号,通过从高位到低位的计算方式将字符串转换为整数,并处理越界情况。同时总结了这几道题都需要对数字的表示有理解。
LeetCode第8题字符串转换整数 (atoi)