标签:count Java int res flag atoi 正负号 last leetcode
题目描述
题目链接:8. 字符串转换整数 (atoi).
题解
从前向后遍历字符串,依次做以下的操作
1、去掉前面的空格
2、判断是否有正负号,如果有负号,flag == 1
3、判断下一位是不是数字,如果是数字,更新res,如果不是数字,直接返回res
4、更新res之后要判断res是否越界。
可以通过:用last记录上一次的res,更新res之后用res/10 == last
来判断是否越界
详见代码注释
class Solution {
public int myAtoi(String s) {
//用来标记是否为负数
int flag = 0;
char[] c = s.toCharArray();
//res记录答案,last用来判断是否越界
int res = 0, last = 0;
//count用来记录遍历到哪一位
int count = 0;
//1、去掉前面的空格
while (count < c.length){
if (c[count] == ' ') count++;
else break;
}
//2、查看是否有正负号
if (count < c.length && c[count] == '-'){
flag = 1;
count++;
}else if (count < c.length && c[count] == '+'){
count++;
}
//3、处理数字
while (count < c.length){
//如果是数字,更新res
if (c[count] >= '0' && c[count] <= '9'){
last = res;
res = res * 10 + (c[count] - '0');
//当res / 10 != last,证明res越界了,根据正负号,返回最大或最小值
if (res / 10 != last){
return flag == 1 ? Integer.MIN_VALUE : Integer.MAX_VALUE;
}
}else break;//如果不是数字,跳出循环
count++;
}
//根据正负号返回结果
return flag == 1 ? -res : res;
}
}
标签:count,Java,int,res,flag,atoi,正负号,last,leetcode 来源: https://blog.csdn.net/weixin_44190665/article/details/121017884
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。