[编程之美-05]字符串转换成整数
来源:互联网 发布:seo赚钱 编辑:程序博客网 时间:2024/06/07 20:01
[版权说明]
编程之美系列算法题集参考:
左程云 著《程序员代码面试指南IT名企算法与数据结构题目最优解》
July 著《编程之法面试和算法心得》
何海涛 著《剑指offer》
微软编程之美小组 著《编程之美》
部分题目摘选PAT、HDOJ、POJ以及各大互联网公司Google,BAT等面试题集。
博主采用C/C++语言实现(有些题目的解法进行优化)。希望编程之美系列博文没有侵犯版权!(若侵权,请联系我,邮箱:1511082629@nbu.edu.cn )
欢迎大家转载分享,编程之美系列算法题集,会不定期更新。鉴于博主本人水平有限,如有问题。恳请批评指正!
[Problem Description]
输入一个由数字组成的字符串,请把它转换成整数并输出。不能使用库函数atoi。
[Sample Input]
123
[Sample Output]
123
基本解法:这道题原理不难,在这里就不解释了。
代码如下:
#include<iostream>#include<string>using namespace std;int strToInt(string str);int main(){ string str;; cin>>str; cout<< strToInt(str) << endl; return 0;}int strToInt(string str){ int n = 0; for(int i = 0; i < str.length(); i ++) { n = n*10 + (str[i] - '0'); } return n;}
这样就可以了?面试官在于考察你的写的函数是否注意到输入的可能不是由数字组成的字符串,是否考虑到+123, -123,1234,这样的输入。假设这里我们把输入的字符串转换为INT类型的整数,如果上溢我们打印最大值。下溢我们就打印最小值,我们知道最大的int类型的整数是0X7fffffff,最小的负数是0X80000000.代码功能有所扩张了,考察点主要是在我们考虑到所有的输入状况。
代码如下:
#include<iostream>#include<string>#include<stdlib.h>using namespace std;#define MAX_INT 0x7fffffff#define MIN_INT 0x80000000bool isDigit(string str);int strToInt(string str);int main(){ string str;; cin>>str; cout<< strToInt(str) << endl; return 0;}bool isDigit(string str){ if(str.length() == 0) return false; for(int i = 0; i < str.length(); i ++) { if((str[i] == '+' || str[i] == '-') && i == 0) continue; if(str[i] < '0' || str[i] > '9') return false; } return true;}int strToInt(string str){ if(isDigit(str) == false) { cout << "input error..." <<endl; exit(1); } int sign = 0, n = 0;; if(str[0] == '+') sign = 1; else if(str[0] == '-') sign = -1; for(int i = 0; i < str.length(); i ++) { if((str[i] == '+' || str[i] == '-') && i == 0) continue; int c = (str[i] - '0'); if(sign >= 0 && (n > MAX_INT / 10 || n == MAX_INT / 10 && c > MAX_INT % 10)) { return MAX_INT; } else if(sign < 0 && (n > MAX_INT / 10) || n == MAX_INT / 10 && c > (MAX_INT % 10 + 1)) { return MIN_INT; } n = n * 10 + c; } return sign >= 0 ? n : -n;}
0 0
- [编程之美-05]字符串转换成整数
- 《编程之法》1.4字符串转换成整数
- java编程之将整数字符串转换为整数
- 将字符串转换成整数编程举例
- 牛客网刷题之把字符串转换成整数
- 整数转换成字符串
- 整数转换成字符串
- 整数转换成字符串
- 字符串转换成整数
- 字符串转换成整数
- 字符串转换成整数
- 字符串转换成整数
- 字符串转换成整数
- 字符串转换成整数
- 字符串转换成整数
- 字符串转换成整数
- 字符串转换成整数
- 字符串转换成整数
- 530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq
- Python3 高阶函数
- Uninstalling will remove the application data
- 数据库强开第一弹
- iOS 组件化 —— 路由设计思路分析
- [编程之美-05]字符串转换成整数
- 进制转换
- JS生成PDF和word文档
- 自定义Mybatis的ResultMap全局id时一个很奇葩的问题
- 输入n个数,找出最小的k个数
- Java从基础开始_04集合的体系
- Yii框架依赖注入DI容器
- poj 2393 Yogurt factory
- HashSet TreeSet LinkedHashSet 区别