把字符串转换成整数
字符串 整数 转换成
2023-09-27 14:19:51 时间
1. 题目描述
题目链接:把字符串转换成整数
2. 解题思路
用一个 index
全程记录字符串下标。按照题目要求的点,先排除前导空格,再检查符号,最后转换数字,遇到非数字即停止转换,直接输出前面部分,最后注意边界等情况。一个遍历即可解决。
算法如下:
(1)去掉无用的前导空格
(2)第一个非空字符为 +
或者 -
号时,作为该整数的正负号,如果没有符号,默认为正数
(3)判断整数的有效部分,确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那么直接返回 0
(4)将字符串前面的整数部分取出,后面可能会存在存在多余的字符(字母,符号,空格等),这些字符可以被忽略,它们对于函数不应该造成影响
注意:
(1)将字符转换为数字的方法:c - '0'
(2)求和公式:sum = sum * 10 + (c - '0')
3. 代码实现
代码示例
class Solution {
public:
int StrToInt(string str) {
// 求和公式:sum = sum * 10 + (c - '0')
int index = 0; //遍历字符串下标
int sign = 1; //符号位
long long sum = 0; //存放整数
//排除前导空格(也可以不写,因为题目没有说有空格)
while (index < str.size())
{
if (str[index] != ' ') //如果第一个字符不是空格,那么直接退出
break;
index++;
}
//判断正负数的情况
if (str[index] == '-') {
sign = -1;
index++;
}
else if (str[index] == '+') {
index++;
}
//开始遍历
while (index < str.size())
{
if (str[index] >= '0' && str[index] <= '9') { //如果字符合法,那么直接累加
sum = sum * 10 + (str[index] - '0');
index++;
}
else { //否则直接返回0
sum = 0;
break;
}
}
sum *= sign; //最后乘以符号位
return sum;
}
};
相关文章
- 用递归法将一个整数n转换成字符串。
- c# 字符串加掩码,隐藏部分字符串
- js检查URL字符串是否含http
- Js或Jquery中去掉字符串变量前后的空格!(已解决!)
- 华为python机试题目:整数与IP地址间的转换、图片整理、字串的连接最长路径查找、提取不重复的整数、字符串合并处理、字符串最后一个单词的长度、删除字符串中出现次数最少的字符
- LeetCode高频题8:字符串转换整数 (atoi)
- 1060 Are They Equal (25 分)【难度: 一般 / 知识点: 模拟 字符串处理】
- C语言字符串输入输出函数
- Linux shell字符串截取与拼接
- python正则表达式应用 定义一个函数,求字符串中出现的所有整数之和
- Python代码库之正则表达式提出字符串内容(含demo源码)
- 力扣解法汇总1805. 字符串中不同整数的数目
- 【C语言】用递归法将一个整数转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意的整数(负数/正数)。
- LeetCode 344. 反转字符串
- 剑指 Offer 67. 把字符串转换成整数
- JS 对象(Object)和字符串(String)互转方法
- 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)
- 刷题笔记之三(统计回文+连续最大和+查找组成一个偶数最接近的两个素数+把字符串转换成整数+不要二)
- 华为OD机试 -求字符串中所有整数的最小和(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 【日常学习】【搜索/排序+字符串】洛谷1012/1107 最大整数题解
- [LeetCode] 839. Similar String Groups 相似字符串组
- [LeetCode] String Compression 字符串压缩
- 你的环境有问题吧?--byte数组转字符串的疑惑
- java中如何忽略字符串中的转义字符--转载
- 【python养成】:案例(判断素数、统计字符串中的大写字母、小写字母、数字、其他字符的个数、整数之和、模拟内置函数)
- 编程参考 - C语言中将字符串转换为整数