编写自己的 Javascript 程序 atoi()
C 中的atoi()函数将字符串(表示整数)作为参数并返回其 int 类型的值。所以基本上该函数用于将字符串参数转换为整数。
句法:
int atoi(const char strn)
参数:该函数接受一个参数strn ,该参数指的是需要转换为其等效整数的字符串参数。
返回值:如果 strn 是有效输入,则该函数返回与传递的字符串数字等效的整数。如果没有发生有效的转换,则函数返回零。
现在让我们了解可以创建自己的 atoi()函数的各种方法,这些方法支持各种条件:
方法一:下面是一个简单的转换实现,不考虑任何特殊情况。
- 将结果初始化为 0。
- 从第一个字符开始,更新每个字符的结果。
- 对于每个字符,将答案更新为result = result * 10 + (s[i] – '0')
Javascript
Javascript
Javascript
输出
89789
方法 2:此实现处理负数。如果第一个字符是“-”,则将符号存储为负数,然后使用前面的方法将字符串的其余部分转换为数字,同时将符号与它相乘。
Javascript
输出
-123
方法 3:此实现处理各种类型的错误。如果str为 NULL 或str包含非数字字符,则返回 0,因为该数字无效。
输出
-134
方法4:需要处理四种极端情况:
- 丢弃所有前导空格
- 号码的标志
- 溢出
- 输入无效
要删除前导空格,请运行循环,直到到达数字的字符。如果数字大于或等于 INT_MAX/10。如果符号为正则返回 INT_MAX,如果符号为负则返回 INT_MIN。其他情况在以前的方法中处理。
空跑:
下面是上述方法的实现:
Javascript
输出
-123
上述所有方法的复杂性分析:
- 时间复杂度: O(n)。
只需要遍历一次字符串。 - 空间复杂度: O(1)。
因为不需要额外的空间。
atoi() 的递归程序。
锻炼:
编写你赢取的 atof() ,它将一个字符串(代表一个浮点值)作为参数,并将其值作为双精度值返回。
有关详细信息,请参阅关于编写自己的 atoi() 的完整文章!