将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
来源:互联网 发布:梦幻西游手游 知乎 编辑:程序博客网 时间:2024/05/17 09:13
剑指offer:
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
注意:C++中的string结尾不一定为NULL(/0)
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647 1a33
输出
2147483647class Solution {public: bool isNotNumber(char input){ if(input < '0' || input > '9') return true; else return false; } int StrToInt(string str) { int len = str.size(); if(!len) return 0; if(str[0] != '+' && str[0] != '-' && isNotNumber(str[0])) return 0; int result = 0; int sign = 1; int i = 0; if(str[0] == '-'){ sign = -1; i = 1; } if(str[0] == '+')i = 1; for(; i < len; i++){ if(isNotNumber(str[i])) return 0; result = result * 10 + str[i] - '0'; } return result * sign; } };优化后的代码:
class Solution {public: bool isNotNumber(char input){ if(input < '0' || input > '9') return true; else return false; } int StrToInt(string str) { int len = str.size(); if(!len) return 0; if(str[0] != '+' && str[0] != '-' && isNotNumber(str[0])) return 0; int result = 0; int sign = 1; int i = 0; if(str[0] == '-'){ sign = -1; i = 1; } if(str[0] == '+')i = 1; for(; i < len; i++){ if(isNotNumber(str[i])) return 0; result = (result << 1) + (result << 3) + (str[i] & 0x0f);//相当于下面一行代码 //用左移代替乘法,利用数字ASCII码的性质,避免了减法。 //result = result * 10 + str[i] - '0'; } return result * sign; } };
阅读全文
0 0
- 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
- 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
- 算法:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
- 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制“字符串”转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制“字符串”转换为十进制数值的问题
- 将一个字符串转换为一个整数,若遇到非数字字符则返回0
- Android自定义分享
- Spring Boot应用上下文启动前后代码执行插入点
- Eclipse启动Tomcat时间过长
- 日常踩坑:mac环境phalcon关于cache目录报错
- Jungle Roads (prim模板)
- 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
- CCF CSP Markdown
- Yii 简明学习教程
- Git命令
- [PlantSimulation]Transporter运输工具的详细用法(三)
- merge conflicts in Git
- Andy's First Dictionary
- Shader 渐变纹理贴图参考代码
- shared_ptr基于引用计数智能指针实现