{面试题49} 把字符串转换成整数
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} 把字符串转换成整数相关推荐
- leetcode —— 面试题67. 把字符串转换成整数
写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到 ...
- 49.把字符串转换成整数
题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一 ...
- 面试题67. 把字符串转换成整数
题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...
- 49. 把字符串转换成整数
题目描述: 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是 ...
- 49 把字符串转换成整数
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数 ...
- 判断字符为空_49. 把字符串转换成整数(剑指offer)
49. 把字符串转换成整数 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0. 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输 ...
- 剑指offer——面试题49:把字符串转换成整数
剑指offer--面试题49:把字符串转换成整数 Solution1: 代码写的啰嗦,但思路清晰..LeetCode上有相似的题目并考虑了溢出,可以参考LeetCode8答案 class Soluti ...
- 程序员面试题精选100题(17)-把字符串转换成整数[算法]
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程 ...
- 把字符串转换成整数(2014年阿里巴巴实习生招聘面试题)
题目:写一个strToInt函数,实现字符串str转换成整数num. 如何将字符串转换成整数,本文使用Java列出了三种方法: 1.利用java.lang.Integer类中的静态函数parseInt ...
最新文章
- Mac FinalShell 连接 VirtualBox 命令行卡顿
- 深圳华强电子交易网络有限公司3.15大会再获大奖
- 使用JMX透过防火墙远程监控tomcat服务
- Zabbix 3.2.6 升级到 Zabbix 3.4.3
- Redis中的主从复制的不足
- 无线数传电台rs232和rs485串口接口:230M数传电台
- ftp服务器 vsftpd搭建和配置以及虚拟用户的设置
- C++11 std::function, std::bind, std::ref, std::cref
- C/C++ OpenCV图像的载入,显示,输出
- 为什么物联网大数据平台,使用TDengine,可不要redis, kafka, spark等软件?
- CVPR 2019 | 文本检测算法PSENet解读与开源实现
- mysql中用来取余数的函数是_Excel中一个专门用来评分的函数TRIMMEAN
- 倍增LCA(bzoj 3732: Network)
- Linux操作系统中df和du命令常见用法
- 多态和C++多态的实现(汇总)
- Dropout浅层理解
- NetAssist连接报错!
- 秒变金庸风 | NLP文本风格迁移
- 利用445 端口渗透
- 2021年下半年软件设计师下午真题及答案解析