实用 AI

可在线运行 AI 集合,涵盖 AI 文案生成、写作辅助、AI 绘图与照片修复、AI 配音、字幕生成、语音转录以及 AI 视频创作和数字人等多种 AI 服务

查看详情

字符串转数字atoi

常见的面试笔试题
2021-05-17 14:29 · 阅读时长6分钟

atoi是c/c++的库函数,用于将字符串类型转为int类型,这是一个经常出现在面试中的问题,我觉得这道题可简单也可复杂,关键看面试官的发挥。

先看一个最简单的实现,这个实现应该要快速能够写出来,因为这是最基本的实现,这通常也不会是面试官期望的最终答案。

加载中...

很容易看出来,上面的实现有很多问题,首先是没有处理异常情况,比如说字符串是null,或者包含非数字字符,不支持负数等等,下面再写一个能够支持负数,并且有异常处理的逻辑的实现。

加载中...

现在看起来好多了,但是还有一个问题没有处理,那就是溢出,整型是有范围的,如果传入的字符串转为数字会超过整型的范围,我们应该抛出异常,而不是返回错误结果。这里有两个小技巧,一是我们需要在溢出的前一次进位的时候判断是否可能溢出,二是为了统一处理正数和负数的情况,在计算过程中我们会统一使用负数,因为使用-Integer.MIN_VALUE作为判断的时候会溢出,如果是正负数分开处理就不用考虑这个问题了。

加载中...
加载中...
atoi笔试题高频面试