剑指offer——把字符串转换成整数(c++)
题目描述
请你写一个函数StrToInt,实现把字符串转换成整数这个功能。
当然,不能使用atoi或者其他类似的库函数。
示例 1:
输入: " -42"
输出: -42
解释: 第一个非空白字符为 '-', 它是一个负号。
示例 2:
输入: "4193 with words"
输出: 4193
解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。
示例 3:
输入: "words and 987"
输出: 0
解释: 第一个非空字符是 'w', 但它不是数字或正、负号。因此无法执行有效的转换。
示例 5:
输入: "-91283472332"
输出: -2147483648
解释: 数字 "-91283472332" 超过 32 位有符号整数范围。 因此返回 INT_MIN (−231) 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
注意:
忽略所有行首空格,找到第一个非空格字符,可以是 ‘+/−’ 表示是正数或者负数,紧随其后找到最长的一串连续数字,将其解析成一个整数;
整数后可能有任意非数字字符,请将其忽略;
如果整数长度为0,则返回0;
如果整数大于INT_MAX(2^31 − 1),请返回INT_MAX;如果整数小于INT_MIN(−2^31) ,请返回INT_MIN;
class Solution {
public:
int strToInt(string str) {
if(str.empty(http://www.my516.com))
return 0;
int flag = 1, i = 0, n = str.size();
long long res = 0;
while(i < n && str[i] == ' ')
++i;
if(i >= n)
return 0;
if(str[i] == '-'){
flag = -1;
++i;
}
if(str[i] == '+'){
if(flag == -1)
return 0;
else
++i;
}
while(str[i] >= '0' && str[i] < '9'){
res = res * 10 + str[i] - '0';
++i;
if(res > INT_MAX)
break;
}
res *= flag;
if(res > INT_MAX)
return INT_MAX;
if(res < INT_MIN)
return INT_MIN;
return res;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
---------------------
相关文章
- 【c++STL——第十讲】bit set系列 (常用知识点总结)
- C++ 在字符串中查找子字符串(最简单)
- C++_关于const 的全面总结
- C/C++以某符号分割字符串
- C/C++ 去掉字符串首位的空格字符
- 73 C++ - string容器
- 55 C++ - 指向类成员的指针
- C/C++由字符串转JSON/JSON转字符串/数组解析/数组添加
- c++串口操作
- 推荐一个C++枚举转字符串的开源项目magic_enum
- 没想到C++中的std::remove_if()函数历史还挺悠久
- 《C++游戏编程入门(第4版)》——1.2 编写第一个C++程序
- 《C++面向对象高效编程(第2版)》——1.11 对象模型的关键要素
- 基于C++实现 bp 神经网络的手写数字识别【100010276】
- 基于QT(C++)+Mysql实现的带GUI的图书管理系统【100010047】
- 1028 List Sorting(简单题,C++中sort()函数的运用)
- c++、oc、swift初步评价
- C/C++下scanf的%匹配以及过滤字符串问题
- C/C++字符串查找函数
- C++ string 字符串查找匹配
- 180、【动态规划】leetcode ——583. 两个字符串的删除操作:两种动态规划思路(C++版本)
- 84、【栈与队列】leetcode ——1047. 删除字符串中的所有相邻重复项:栈+双指针解法(C++版本)
- 79、【字符串】leetcode ——28. 找出字符串中第一个匹配项的下标(C++版本)
- 76、【字符串】剑指 Offer ——05. 替换空格(C++版本)
- 44、【树和二叉树】Trie(前缀树/搜索树)字符串统计(C/C++版)
- C++ 去掉字符串的首尾空格和全部空格
- C++字符串切割的两种方法
- C++:查找字符串字串并替换