博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang面试考题记录 ━━ 字符串转换整数 (atoi),知识点ascii、rune、uint8、string、char等转换
阅读量:4115 次
发布时间:2019-05-25

本文共 1472 字,大约阅读时间需要 4 分钟。

===问:

请你来实现一个 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) 。

===答:

执行用时 :0 ms/4 ms, 在所有 Go 提交中击败了100.00%/54.75% 的用户

内存消耗 :2.3 MB, 在所有 Go 提交中击败了63.22%的用户

执行效率有所波动

这道题就和一般项目思路一样,尽可能囊括更多的可能,没有什么特别的算法。
用go自带的strconv.Atoi等方式来写代码,执行情况都差不多。

func myAtoi3(str string) int {
// 去掉前后空格 str = strings.TrimSpace(str) l := len(str) if l < 1 {
return 0 } r := 0 i := 0 // 是否负数 n := 1 // 去掉开头是+或- // - if str[0] == 45 {
i = 1 n = -1 } // + if str[0] == 43 {
i = 1 } for ; i < l; i++ {
// 必须是数字,否则跳出 if str[i] < 48 || str[i] > 57 {
break } r = r*10 + int(str[i]-48)*n // 是否超出边界 if r > 2147483647 {
return 2147483647 } else if r < -2147483648 {
return -2147483648 } } // 返回 return r}

转载地址:http://itkpi.baihongyu.com/

你可能感兴趣的文章
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
关于无线PCB中 中50欧姆的特性阻抗的注意事项
查看>>
Spring的单例模式源码小窥
查看>>
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>
MySQL中InnoDB事务的默认隔离级别测试
查看>>
微服务的注册与发现
查看>>
bash: service: command not found
查看>>
linux Crontab 使用 --定时任务
查看>>
shell编程----目录操作(文件夹)
查看>>
机器学习-----K近邻算法
查看>>