剑指offer49 把字符串转换成整数
2024-09-04 12:53:18
这个代码会报错
class Solution {
public:
enum status {kvalid = ,kinvalid};
int now_status = kvalid;
int StrToInt(string str) {
now_status = kinvalid;
long long num = ;
int index = ;
bool minus = false;
if(str.size() != && str[index] != '\0'){
if(str[index] == '+'){
index++;
}
else if(str[index] == '-'){
minus = true;
index++;
}
if(str[index] != '\0'){
num = StrToIntCore(str,minus,index);
}
}
return int(num);
}
long long StrToIntCore(string str,bool minus,int index){
int length = str.size();
long long num = ;
int flag = minus ? - : ;
for(;index < length;index++){
if(str[index] >= '' && str[index] <= ''){
num = num* + flag * (str[index]-'');if(( num < 0x80000000) || ( num > 0x7FFFFFFF)){
num = ;
break;
}
}
else{
num = ;
break;
}
}
if(str[index] == '\0'){
now_status = kvalid;
}
return num;
}
};
修改为:
class Solution {
public:
enum status {kvalid = ,kinvalid};
int now_status = kvalid;
int StrToInt(string str) {
now_status = kinvalid;
long long num = ;
int index = ;
bool minus = false;
if(str.size() != && str[index] != '\0'){
if(str[index] == '+'){
index++;
}
else if(str[index] == '-'){
minus = true;
index++;
}
if(str[index] != '\0'){
num = StrToIntCore(str,minus,index);
}
}
return int(num);
}
long long StrToIntCore(string str,bool minus,int index){
int length = str.size();
long long num = ;
int flag = minus ? - : ;
for(;index < length;index++){
if(str[index] >= '' && str[index] <= ''){
num = num* + flag * (str[index]-'');
int xxxx= 0x80000000;
if(( num < xxxx) || ( num > 0x7FFFFFFF)){
num = ;
break;
}
}
else{
num = ;
break;
}
}
if(str[index] == '\0'){
now_status = kvalid;
}
return num;
}
};
或者修改为
class Solution {
public:
enum status {kvalid = ,kinvalid};
int now_status = kvalid;
int StrToInt(string str) {
now_status = kinvalid;
long long num = ;
int index = ;
bool minus = false;
if(str.size() != && str[index] != '\0'){
if(str[index] == '+'){
index++;
}
else if(str[index] == '-'){
minus = true;
index++;
}
if(str[index] != '\0'){
num = StrToIntCore(str,minus,index);
}
}
return int(num);
}
long long StrToIntCore(string str,bool minus,int index){
int length = str.size();
long long num = ;
int flag = minus ? - : ;
for(;index < length;index++){
if(str[index] >= '' && str[index] <= ''){
num = num* + flag * (str[index]-'');
if(( num < (signed int)0x80000000) || ( num > 0x7FFFFFFF)){
num = ;
break;
}
}
else{
num = ;
break;
}
}
if(str[index] == '\0'){
now_status = kvalid;
}
return num;
}
};
最新文章
- [Note] Build your SDL2 Environment in Visual Studio 2013 配置你的SDL2运行环境
- python3 入门 (四) 类与继承
- [工具]推荐一款查看dll依赖工具
- 递推DP URAL 1167 Bicolored Horses
- ios即时通讯客户端开发之-mac上搭建openfire服务器
- sql Server2005 master损坏处理
- IT讲师韩顺平:我为什么辞去百万年薪,自己创业?
- js模块,类,继承,命名空间,私有属性等相关概念梳理
- studio中集成.so文件的两种方式
- Repeater在无数据记录时显示暂无数据
- swift 3.0 基础练习 面向对象 类
- 听说图像识别很难,大神十行代码进行Python图像识别
- Get WMS Static GoodLocation By Dynamic SQL
- IDEA中文出现乱码解决(转)
- redis 配置 架构 基础
- centos7下opencv3的安装
- Linux U盘安装
- Oracle总结之plsql编程(基础九)
- iOS-----使用CFNetwork实现TCP协议的通信
- 20145311 《Java程序设计》第2周学习总结