1 Star 1 Fork 0

jiexingwei/C++算法编程题(剑指offer)

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
把字符串转换成整数.cpp 1.91 KB
一键复制 编辑 原始数据 按行查看 历史
jiexingwei 提交于 2020-03-23 22:38 . 剑指offer c++s实现
链接:https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&tqId=11202&tPage=3&rp=2&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking
来源:牛客网
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
输入例子:
+2147483647
1a33
输出例子:
2147483647
0
int globle_flag = 0;
class Solution {
public:
int StrToInt(string str) {
if(str.empty())
{
globle_flag = 1;
return 0;
}
int res = 0;
int base = 1;
for(int i = str.size() - 1; i > 0;i--)
{
if(str[i]>= '0' && str[i] <= '9')
{
res += ((str[i] -'0') * base);
if(res > INT_MAX) //溢出
{
globle_flag = 1;
return 0;
}
}
else
{
globle_flag = 1;
return 0;
}
base *= 10;
}
if(str[0] == '-') //判断第一位是什么符号
{
res = 0 - res;
if(res < (signed int)0x80000000)
{
globle_flag = 1;
return 0;
}
}
else if(str[0] >= '0' && str[0] <= '9')
{
res += ((str[0] - '0') * base);
if(res > INT_MAX) //溢出
{
globle_flag = 1;
return 0;
}
}
else if(str[0] == '+')
{
res = res;
}
else
{
globle_flag = 1;
return 0;
}
return res;
}
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/jie_xing_wei/code_c_algorithm.git
git@gitee.com:jie_xing_wei/code_c_algorithm.git
jie_xing_wei
code_c_algorithm
C++算法编程题(剑指offer)
master

搜索帮助