剑指offer 算法 (综合)
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
解析:现在才发现,原来字符串转数字特蛋疼,很多细节,以前从来就没考虑过,鲁棒性啊!!!
首先,得定义个标志位LegitimateInput,表示串str是否为合法输入,初始化为1:合法输入。开始判断啦~~~若str空串,直接LegitimateInput置0,return 0退出;不是空串,那么,开始分析每个字符。定义标志minus表示是否为负数,初始化为-1。读首个字符,若为‘+’或者‘-’,minus置位,1:正,0:负,下标位pos+1;之后,开始逐个读字符计算数字,i从pos开始读至串尾,一旦出现非‘0’~‘9’之间的字符,LegitimateInput置0,sum置0,并退出循环(可以直接return 0);否则继续循环,每次计算一遍,还有判断数字是否上溢或下溢,并做处理。循环结束,若是正确合理输入,给LegitimateInput置1,并且若minus为-1,sum结果记得取反哦
反正,一切细心细心再细心,要考虑全部情况
class Solution {
public:int LegitimateInput = 1;//0:表示不合法输入 1:表示合法输入int StrToInt(string str) {if(str.size()==0){LegitimateInput=0;return 0;}int sum=0;int minus=-1;//负数标志 1为负数int pos=0;//下标if(str[0] == '-'){minus=1;pos++;} else if(str[0] == '+'){minus=0;pos++;}int i;for(i=pos;i<str.size();i++){if(str[i] >= '0' && str[i] <= '9')sum=sum*10+(str[i]-'0');else {sum=0;LegitimateInput=0;break;}if(minus==0 && sum > 2147483647){//上溢出sum=0;LegitimateInput=0;break;}if(minus==1 && sum < -2147483648){//下溢出sum=0;LegitimateInput=0;break;}}if(sum == 0 && minus != -1 && str.size() == 1){LegitimateInput=0;//正负号 直接结束}if(str[i]== '\0' && sum != 0){if(minus==1)sum=-sum;LegitimateInput=1;}return sum;}
};
剑指offer 算法 (综合)相关推荐
- java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...
推荐阅读:宇宙条的工作总结:一年前还在面试找工作,一年后在面试找工作的学弟学妹们:第一次当面试官的经历分享小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合 ...
- 道指mt4代码_剑指offer算法题052:正则表达式匹配
小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...
- 剑指offer算法题028:数组中出现次数超过一半的数字
小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...
- 剑指offer算法题分析与整理(一)
下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.数组中的逆序对 2.二维数组中的查找 3.顺时针打印矩阵 ...
- 剑指offer算法合集
汇总:Android小白成长之路_知识体系汇总[持续更新中-] 简述 算法,不知道是多少程序猿的痛,对我而言也如此,因此今天开始记录那些刷过的算法题,其中最经典的莫过于剑指offer里的题目,精妙的解 ...
- 剑指offer算法题分析与整理(二)
下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.序列化二叉树 2.带记忆的DFS搜索 3.坐标数位和不大 ...
- LeetCode剑指offer算法备战春招-包含min函数的栈
剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...
- 剑指offer 算法 (时间效率)
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- 剑指offer 算法 (代码的完整性)
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. class Solution { public:double Power(do ...
最新文章
- Go: 分布式学习利器(2)-- Go中的变量,常量 以及与其他语言变量之间的差异
- android+单利模式中传递context,Android的Context详解
- cisco pix防火墙命令使用
- How far away ?
- java jms clust,Geoserver 的 JMS Cluster modules(集群数据同步)
- mysql group by自定义_mysql – GROUP BY和自定义顺序
- SmartTimer的开发思路
- MySQL数据库的基本操作命令
- Varnish——CDN加速的实现(多个后端服务器实现负载均衡、虚拟主机)
- php导出excel2007实例,PHP导出EXCEL的简单范例 使用phpexcel类库导出excel
- 技术分享| 如何部署安装分布式序列号生成器系统
- 将远程linux中的文件拷贝过来,Linux之间远程拷贝文件
- linux 3g拨号,中兴MF637U 3G 联通 linux 拨号
- 新版二开cp盲盒小纸条月老小程序源码【源码好优多】
- docker实战——在测试中使用Docker
- 划分计算机发展的四个阶段主要依据,计算机的发展划分为4个阶段,分别为什么、什么、什么和什么。...
- 使用ffmpeg对视频进行画面裁剪
- 携程、艺龙、酷讯演绎在线旅游三国志
- 成为人工智能产品经理需要具备哪些能力?
- 华为AI计算机,华为在人工智能行业的发展