From 剑指Offer 何海涛 著

#include <iostream>
#include <string>#include <cctype>bool g_valid = false;int StrToInt(const std::string& s) {long long res = 0ll;int n = s.size();int i= 0;g_valid = true;while(i<n && s[i] == ' ') {i++;}bool isNegative = false;if(s[i] == '-') {isNegative = true;i++;} else if(s[i] == '+') {i++;}if(i== n) {g_valid = false;return res;}while(i<n && isdigit(s[i])) {res *= 10;res += s[i] - '0';i++;if(!isNegative && res > (long)0x7fffffff || isNegative&& -res < (long)0x80000000) {g_valid = false;return 0;}}if(i< n) {g_valid = false;return 0;}return isNegative ? -res : res;
}

测试集:

void test(const std::string &s, int n, bool valid) {std::cout << std::boolalpha<< (StrToInt(s) == n && valid == g_valid) << std::endl;
}int main(int argc, char* argv[]) {test("", 0, false);test("  ", 0, false);test("+", 0, false);test("-", 0, false);test("123", 123, true);test("+0", 0, true);test("-0", 0, true);test("+123", 123, true);test("-123", -123, true);test("abc", 0, false);test("1a33", 0, false);//有效的最大正整数, 0x7FFFFFFFtest("+2147483647", 2147483647, true);test("+2147483648", 0, false);//有效的最小负整数, 0x80000000test("-2147483648", -2147483648, true);test("-2147483649", 0, false);return 0;
}

转载于:https://www.cnblogs.com/long3216/p/4438234.html

{面试题49} 把字符串转换成整数相关推荐

  1. leetcode —— 面试题67. 把字符串转换成整数

    写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到 ...

  2. 49.把字符串转换成整数

    题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一 ...

  3. 面试题67. 把字符串转换成整数

    题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...

  4. 49. 把字符串转换成整数

    题目描述: 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是 ...

  5. 49 把字符串转换成整数

    将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数 ...

  6. 判断字符为空_49. 把字符串转换成整数(剑指offer)

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

  7. 剑指offer——面试题49:把字符串转换成整数

    剑指offer--面试题49:把字符串转换成整数 Solution1: 代码写的啰嗦,但思路清晰..LeetCode上有相似的题目并考虑了溢出,可以参考LeetCode8答案 class Soluti ...

  8. 程序员面试题精选100题(17)-把字符串转换成整数[算法]

    题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程 ...

  9. 把字符串转换成整数(2014年阿里巴巴实习生招聘面试题)

    题目:写一个strToInt函数,实现字符串str转换成整数num. 如何将字符串转换成整数,本文使用Java列出了三种方法: 1.利用java.lang.Integer类中的静态函数parseInt ...

最新文章

  1. Mac FinalShell 连接 VirtualBox 命令行卡顿
  2. 深圳华强电子交易网络有限公司3.15大会再获大奖
  3. 使用JMX透过防火墙远程监控tomcat服务
  4. Zabbix 3.2.6 升级到 Zabbix 3.4.3
  5. Redis中的主从复制的不足
  6. 无线数传电台rs232和rs485串口接口:230M数传电台
  7. ftp服务器 vsftpd搭建和配置以及虚拟用户的设置
  8. C++11 std::function, std::bind, std::ref, std::cref
  9. C/C++ OpenCV图像的载入,显示,输出
  10. 为什么物联网大数据平台,使用TDengine,可不要redis, kafka, spark等软件?
  11. CVPR 2019 | 文本检测算法PSENet解读与开源实现
  12. mysql中用来取余数的函数是_Excel中一个专门用来评分的函数TRIMMEAN
  13. 倍增LCA(bzoj 3732: Network)
  14. Linux操作系统中df和du命令常见用法
  15. 多态和C++多态的实现(汇总)
  16. Dropout浅层理解
  17. NetAssist连接报错!
  18. 秒变金庸风 | NLP文本风格迁移
  19. 利用445 端口渗透
  20. 2021年下半年软件设计师下午真题及答案解析

热门文章

  1. DL开源框架Caffe | 模型微调 (finetune)的场景、问题、技巧以及解决方案
  2. conductor任务域
  3. 百度面试测试开发工程师内容
  4. C++模拟实现Objective-C协议和代理模式
  5. Vi Command
  6. 使用MEF构建可扩展的Silverlight应用
  7. 致:WWF技术博客领跑者WXWINTER--兰竹梅菊.春夏秋冬
  8. 浅析call和apply的不同
  9. Spring IoC — 基于XML的配置
  10. C++ 复制构造函数