题目:字符串转换整数 (atoi)

请你来实现一个 atoi 函数,使其能将字符串转换成整数。

首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。

当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。

该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。

注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。

在任何情况下,若函数不能进行有效的转换时,请返回 0。

说明:

假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,qing返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。

示例 1:

输入: “42”
输出: 42

示例 2:

输入: " -42"
输出: -42
解释: 第一个非空白字符为 ‘-’, 它是一个负号。
我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。

示例 3:

输入: “4193 with words”
输出: 4193
解释: 转换截止于数字 ‘3’ ,因为它的下一个字符不为数字。

示例 4:

输入: “words and 987”
输出: 0
解释: 第一个非空字符是 ‘w’, 但它不是数字或正、负号。
因此无法执行有效的转换。

示例 5:

输入: “-91283472332”
输出: -2147483648
解释: 数字 “-91283472332” 超过 32 位有符号整数范围。
因此返回 INT_MIN (−231) 。

代码实现:

int myAtoi(char* str) {int len;bool flag = 0, res_base = 0;long long unsigned int inter_value = 0;long long int bak_inter = 0;len = strlen(str);/* 滤掉字符串前的空格 */while(isspace(*str))str++;/* 判断滤除空格后第一位是否为- */if(*str == '-'){flag = 1;str++;}/* 判断滤除空格后第一位是否为+ */else if(*str == '+')str++;/* 第一位除了+、-,不是数字的不做转换 */else if(isdigit(*str) == 0)return 0;/* 将后面的数字字符转换为整数 */for(; *str != '\0'; str++){if(isdigit(*str)){inter_value = (*str - '0') + inter_value * 10;/* 大于INT_MAX,则等于INT_MAX并退出循环 */if(inter_value > 2147483647){inter_value = 2147483647;res_base = 1;break;}}else{break;}}bak_inter = inter_value;if((flag == 1) && (res_base == 1))bak_inter = -bak_inter - 1;else if(flag == 1)bak_inter = -bak_inter;return bak_inter;
}

Leetcode算法题(C语言)18--字符串转换整数 (atoi)相关推荐

  1. 【数据结构与算法】之深入解析“字符串转换整数 (atoi)”的求解思路和算法示例

    一.题目要求 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(string s) ...

  2. 8. 字符串转换整数 (atoi)(leetcode力扣算法 - java / rust)

    8. 字符串转换整数 (atoi): 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAto ...

  3. c++ 32位有符号的整数_【LeetCode】字符串分类字符串转换整数 (atoi)

    " 摘要:本文主要讲述LeetCode字符串分类字符串转换整数 (atoi)解法.主要内容如下: 题目 示例 解题 " 01 - 题目 请你来实现一个 atoi 函数,使其能将字符 ...

  4. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历

    Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...

  5. [DFA|有限状态机] leetcode 8 字符串转换整数(atoi)

    [DFA|有限状态机] leetcode 8 字符串转换整数(atoi) 1.题目 题目链接 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符, ...

  6. 力扣——字符串转换整数 (atoi)

    字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(st ...

  7. C++字符串转换整数 (atoi)

    字符串转换整数 (atoi) 一个小更新. 今天仔细的研究了一下int型越界的情况, 顺便把力扣的一道题做了. 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 ...

  8. LeetCode8. 字符串转换整数 (atoi)

    LeetCode8. 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...

  9. 20190822:(leetcode习题)字符串转换整数 (atoi)

    字符串转换整数 题目 大致思路 代码实现 题目 大致思路 这题主要是乱,思路大家都很容易想,就是把各种情况给码出来就行了,大家见我的代码注释会比较清晰. 几个用得到的方法:trim和substring ...

  10. 8. 字符串转换整数 (atoi)(正则表达式)

    字符串转换整数--C, Python实现 1. 问题描述与分析 2. C语言实现 3. Python实现 3.1 普通判断法 3.2 正则表达式法 1. 问题描述与分析 问题描述: 问题分析: 该算法 ...

最新文章

  1. python 把集合转成字典的方法
  2. 发现一篇专门吐槽 NLP 内卷现状的 ACL 论文 ...
  3. Servlet与JSP学习笔记(五) JSP核心(下)
  4. 以太坊“拿下”世界银行(WB)!7300万美元债券将在下周完成结算
  5. 基于 FFmpeg 的播放器 demo
  6. 01-复杂度1 最大子列和问题 (20 分)
  7. Quartz SpringMvc Mybatis操作数据库异常
  8. HOWTO: 判断全角和半角
  9. 基于云的平台利用新技术来改变商店式购物营销
  10. Python批量提取PowerPoint文件中所有幻灯片标题和备注文本
  11. 【基础】算法时空复杂度【OI缩水版】
  12. 暑期集训20190727 水(water)
  13. android 动画效果
  14. RPM软件包管理(安装、卸载、查询、制作)
  15. JSP的九大内置对象
  16. 麦克斯韦方程组(彩图完美解释版)
  17. 正则表达式网站在线测试
  18. C#之基于winform窗体绘制简单图形
  19. 高企奖励来啦!2022年武汉市各区高新技术企业奖励补贴汇总和申报时间、申报条件
  20. Shiro框架基础及搭建

热门文章

  1. python的列表就是数组吗_python中list和数组的区别是什么?
  2. 如何看计算机几核,windows7系统怎么看CPU是几核的?win7查看CPU是几核的方法
  3. C++/OpenGL:图像指针操作
  4. 可变形卷积学习(RepPoints)
  5. UMEditor调整文本编辑器的组件位置的方法
  6. webstorm 左侧文件目录树(不显示,怎么办?) - 设置篇
  7. (个人使用)uni-app开发(官方资源)· 汇总
  8. win10快速运行vue项目跑起来 - 方法篇
  9. 怎么清空topic数据_20.Roscpp/Rospy:Topic_demo
  10. 萝卜源码前后端源码+打包APP的教程