这个代码会报错

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;
}
};

剑指offer49 把字符串转换成整数的更多相关文章

  1. 剑指offer——把字符串转换成整数(c++)

    题目描述请你写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不能使用atoi或者其他类似的库函数. 示例 1:输入: " -42"输出: -42解释: 第一个非空 ...

  2. 剑指Offer 把字符串转换成整数

    题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法 ...

  3. 剑指Offer——把字符串转换成整数

    题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0   输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果 ...

  4. 剑指offer--15.把字符串转换成整数

    stringstream做这个真的很舒服 ------------------------------------------------------------------------------- ...

  5. 【Java】 剑指offer(67) 把字符串转换成整数

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...

  6. 剑指Offer - 九度1508 - 把字符串转换成整数

    剑指Offer - 九度1508 - 把字符串转换成整数2014-02-06 23:46 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例 ...

  7. 剑指 Offer 67. 把字符串转换成整数 + 字符串

    剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...

  8. 把字符串转换成整数 牛客网 剑指Offer

    把字符串转换成整数 牛客网 剑指Offer 题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串 ...

  9. 力扣 - 剑指 Offer 67. 把字符串转换成整数

    题目 剑指 Offer 67. 把字符串转换成整数 思路1 根据题意,要解决这题,首先要判断的条件有: 不包括首位空格 第一位必须为:+.-.数字三者其一,否则不合法 数字必须连续的,如果遇到非数字, ...

随机推荐

  1. 关于WampServer一些配置修改

    1.解决WAMP mysql中文乱码问题(在mysql的my.ini文件中) 1).找到client字段并添加:default-character-set=utf8 2).找到mysql字段并添加: ...

  2. 我想和你们说说java和C++___C加加

    头痛头痛之一: java里面,本质上来说,一个类是一个程序员定义的类型,类是一种引用类型(reference type),这意味着该类类型的变量都可以引用该类的一个实例.从表面上,对象引用变量中似乎存 ...

  3. UGUI 哪些显示在前方的问题

    1.对于一个场景里不同的Canvas来说,越最后创建的或者越最后激活的Canvas,越显示在前方. 2.对于同一个Canvas里的UI来说在Hierarchy面板越靠下越显示在前方.

  4. centOS和redHat防火墙开放端口

    发现在CentOS 7上开放端口用iptables没效果(或者是sodino没找到正确的命令,传说Centos7 下默认的防火墙是 Firewall,替代了之前的 iptables)… 使用firew ...

  5. (转)vim(vi)常用操作及记忆方法

    vim(vi)常用操作及记忆方法 原文:https://www.cnblogs.com/doseoer/p/6241443.html vi(vim)可以说是linux中用得最多的工具了,不管你配置服务 ...

  6. 牛客网Java刷题知识点之File对象常用功能:获取文件名称、获取文件路径、获取文件大小、获取文件修改时间、创建与删除、判断、重命名、查看系统根目录、容量获取、获取某个目录下内容、过滤器

    不多说,直接上干货! 获取文件名称.获取文件路径.获取文件大小.获取文件修改时间 FileMethodDemo.java package zhouls.bigdata.DataFeatureSelec ...

  7. 百度BAE数据库连接问题

    今天第一次使用百度的开发平台BAE,按照入门文档上的操作一步步来,进行的很顺利,可是我在上传了一个cms系统后,进行安装时,卡在了数据库连接这个地方,弄了一下午,终于有了结果,在这里记录起来,希望能帮 ...

  8. lftp 快速使用

    登录 lftp username:password@ip:port 设置字符集 set ftp:charset 'gbk' set ftp:charset 'utf-8' 下载文件 mget *.tx ...

  9. linux下常用命令备忘

    转自:Linux 命令集锦 linux下查看监听端口对应的进程 # lsof -i:9000 # lsof -Pnl +M -i4 如果退格键变成了:"^h". 终端连接unix删 ...

  10. C++ stl vector介绍

    转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...