把字符串转换成整数 一点小小的经验总结
把字符串转换成整数
- 功能:实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数
- 题解分析
- 会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止
- eg:“ 123” 返回123 “ 234”返回234
- 开头为空字符串 ,判断其位空,不需要转换
- eg:“” 返回0
- 第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数
- eg: “ +123” 返回123 “ -123 ”返回-123
- 有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,不应该造成影响
- eg:“ -123whe# ” 返回-123
- 第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则不需要进行转换
- eg:“hell123:“返回0
- 只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,请返回 INT_MAX (2^31-1) 或 INT_MIN (−2^31) 。
输入283472332"
输出: -2147483648
解释: 数字 "-91283472332" 超过 32 位有符号整数范围,因此返回 INT_MIN (−231)
方法1实现代码如下
class Solution {
public:bool isdigit(char str){if(str>'0'&&str<'9')return true;elsereturn false;}int strToInt(string str) {int flag=1;int i=0;//const char* p=str;if(str.size()==0){return 0;}if(str[0]=='\0'){return 0;}while(str[i]==' '){i++;}if(str[i]=='+'){flag=1;i++;}else if(str[i]=='-'){flag=-1;i++;}long long res=0;//对非空和非+-号的有效数字进行处理for(; i<str.size(); i++){if(str[i]>='0' && str[i]<='9') //判断是否为有效数字{//res = res*10 + (str[i] - '0'); //***字符相减转换成int//if(res > INT_MAX && flag) return INT_MIN;//if(res > INT_MAX && flag) return INT_MAX;res = res*10 + flag*(str[i] - '0'); //***字符相减转换成intif(res > INT_MAX) res=INT_MAX;if(res < INT_MIN) res=INT_MIN;}else //碰到非有效数字就退出break;}return res;}
};
方法2实现代码如下:
class Solution {
public:int strToInt(string str) {if(str.size()==0) return 0;int i = 0;long ans = 0;bool negative = false;//跳过前面空格,判断正负while(str[i]==' ') i++;if(str[i]=='-'){negative = true;i++;}else if(str[i]=='+')i++;//对非空和非+-号的有效数字进行处理for(; i<str.size(); i++){if(str[i]>='0' && str[i]<='9') //判断是否为有效数字{ans = ans*10 + (str[i] - '0'); //***字符相减转换成intif(ans > INT_MAX && negative) return INT_MIN;if(ans > INT_MAX && !negative) return INT_MAX;}else //碰到非有效数字就退出break;}return negative? -ans:ans;}
};
来源:剑指offer 字符转化为整数
把字符串转换成整数 一点小小的经验总结相关推荐
- oracle 转化为整数,字符串转换成整数——从源码学习
字符串转换成整数:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345. 在笔试面试中,atoi 即「字符串转换成整数」是一个经典问题了 ...
- 将十六进制的字符串转换成整数
#include "stdafx.h" #include<stdio.h> #include<string.h>/*将大写字母转换成小写字母*/ int t ...
- python 字符串转换成整数
| String to Int 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个 ...
- 程序员面试题精选100题(17)-把字符串转换成整数[算法]
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程 ...
- 判断字符为空_49. 把字符串转换成整数(剑指offer)
49. 把字符串转换成整数 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0. 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输 ...
- 2019-02-26-算法-进化(字符串转换成整数)
题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则 ...
- 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...
点击专辑上方"蓝字"关注我吧 题目难度: 中等 原题链接[1] 今天继续更新剑指 offer 系列, 老样子晚上 6 点 45 分准时更新公众号 每日精选算法题, 大家记得关注哦~ ...
- 【Java】 剑指offer(67) 把字符串转换成整数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...
- leetcode —— 面试题67. 把字符串转换成整数
写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到 ...
最新文章
- memcached和redis的区别和应用场景
- 当你累了,准备放弃时,看看这个吧!!!
- QT的QAudioOutput类的使用
- 获取拍照图片,显示大图像
- python基本数据类型第三周_python3第二天(基本数据类型)
- 基于MapWinGis开发探索(一)
- 1.5.2 Prime Palindromes 回文质数(构造回文)
- [LOJ6437][计算几何]PKUSC2018:PKUSC
- vuex获取php数据,vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
- Python计算均值、方差、标准差、协方差等常用指标的方法——Numpy模块+Pandas模块
- 指纹识别技术综述(扫盲篇)(转载)
- 从技术角度谈如何开发一款微信联网小游戏
- 杭电多校-Loop-(不确定性贪心+线段树)
- CF1091F New Year and the Mallard Expedition
- layui 动态绑定下拉框
- MEMS--微机电系统
- MAGIC: 即插即用、无需训练的图像-文本生成框架
- uniapp [微信小程序开发工具]?Enable IDE Service (y/N) ESC[27DESC[27C
- wifi模组论坛_华为太狠了!5G工业模组直接干到999元!高通遭遇沉重一击!
- 微博/微信登录与分享、微信/支付宝支付