mirror of
https://github.com/ShusenTang/LeetCode.git
synced 2024-09-02 14:20:01 +00:00
Create 8. String to Integer (atoi).md
This commit is contained in:
parent
c085a4074f
commit
6ebd33f4b0
39
8. String to Integer (atoi).md
Normal file
39
8. String to Integer (atoi).md
Normal file
@ -0,0 +1,39 @@
|
||||
# [8. String to Integer (atoi)](https://leetcode.com/problems/string-to-integer-atoi/)
|
||||
# 思路
|
||||
实现atoi函数,即将字符串转换为对应数字。
|
||||
> `atoi()`函数用来将字符串转换成整数(int),其原型为:
|
||||
`int atoi (const char * str);`
|
||||
atoi函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等),
|
||||
直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
|
||||
|
||||
按照上面的说明转换即可(题目说了空白字符只考虑空格),为了防止溢出将结果用long long型存放。
|
||||
|
||||
# C++
|
||||
``` C++
|
||||
class Solution {
|
||||
private:
|
||||
int char2digit(const char c){ // 将字符转换为对应数字,若非数字则返回-1
|
||||
if(c >= '0' && c <= '9') return int(c - '0');
|
||||
return -1;
|
||||
}
|
||||
public:
|
||||
int myAtoi(string str) {
|
||||
long long res = 0;
|
||||
int len = str.size(), i = 0, minus_sign = 0;
|
||||
while(i < len && str[i] == ' ') i++;
|
||||
if(i < len && (str[i] == '-' || str[i] == '+'))
|
||||
if(str[i++] == '-') minus_sign = 1;
|
||||
|
||||
while(i < len){
|
||||
int digit = char2digit(str[i]);
|
||||
if(digit == -1) break;
|
||||
res = res * 10 + digit;
|
||||
if(minus_sign == 1 && -res < INT_MIN) return INT_MIN;
|
||||
else if(minus_sign == 0 && res > INT_MAX) return INT_MAX;
|
||||
i++;
|
||||
}
|
||||
return minus_sign == 1 ? -res: res;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user