把字符串转换成整数

  1. 功能:实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数
  2. 题解分析
  • 会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止
  • 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  字符转化为整数

把字符串转换成整数 一点小小的经验总结相关推荐

  1. oracle 转化为整数,字符串转换成整数——从源码学习

    字符串转换成整数:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345. 在笔试面试中,atoi 即「字符串转换成整数」是一个经典问题了 ...

  2. 将十六进制的字符串转换成整数

    #include "stdafx.h" #include<stdio.h> #include<string.h>/*将大写字母转换成小写字母*/ int t ...

  3. python 字符串转换成整数

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

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

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

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

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

  6. 2019-02-26-算法-进化(字符串转换成整数)

    题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则 ...

  7. 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...

    点击专辑上方"蓝字"关注我吧 题目难度: 中等 原题链接[1] 今天继续更新剑指 offer 系列, 老样子晚上 6 点 45 分准时更新公众号 每日精选算法题, 大家记得关注哦~ ...

  8. 【Java】 剑指offer(67) 把字符串转换成整数

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...

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

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

最新文章

  1. memcached和redis的区别和应用场景
  2. 当你累了,准备放弃时,看看这个吧!!!
  3. QT的QAudioOutput类的使用
  4. 获取拍照图片,显示大图像
  5. python基本数据类型第三周_python3第二天(基本数据类型)
  6. 基于MapWinGis开发探索(一)
  7. 1.5.2 Prime Palindromes 回文质数(构造回文)
  8. [LOJ6437][计算几何]PKUSC2018:PKUSC
  9. vuex获取php数据,vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
  10. Python计算均值、方差、标准差、协方差等常用指标的方法——Numpy模块+Pandas模块
  11. 指纹识别技术综述(扫盲篇)(转载)
  12. 从技术角度谈如何开发一款微信联网小游戏
  13. 杭电多校-Loop-(不确定性贪心+线段树)
  14. CF1091F New Year and the Mallard Expedition
  15. layui 动态绑定下拉框
  16. MEMS--微机电系统
  17. MAGIC: 即插即用、无需训练的图像-文本生成框架
  18. uniapp [微信小程序开发工具]?Enable IDE Service (y/N) ESC[27DESC[27C
  19. wifi模组论坛_华为太狠了!5G工业模组直接干到999元!高通遭遇沉重一击!
  20. 微博/微信登录与分享、微信/支付宝支付

热门文章

  1. 一个编程菜鸟对未来编程学习的看法
  2. Unity3D Shader系列之渲染流水线
  3. 当当网年中图书大促来了,全年买书最好时机
  4. 利用MarqueeTextView实现上下公告栏并点击进行相应跳转
  5. 将混淆矩阵中的数字字体变大--python
  6. KVM halt-polling机制分析 1
  7. Django连接使用SQL Server数据库(windows版)
  8. IPTV终端与机顶盒技术
  9. Django的身份认证系统
  10. 每日一题-45(访问日期之间最大的空档期)