• [LeetCode]8. 字符串转换整数 (atoi)


    题目

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    解法

    这道题将字符串转化为整数,需要考虑多种情况

    1.如果字符串开头为空格则需要跳过空格到第一个字符
    2.需要判断第一个字符是符号+/-,并用sign标记
    3.如果下个字符不是数字则结束循环
    4.如果下个字符是数字则转化为整形存储下来
    5.考虑溢出情况,如果溢出则用32位整形边界值代替返回值

    class Solution {
        public int myAtoi(String str) {
    		if(str.isEmpty())return 0;
    		//sign=1表示正数,sign=-1表示负数。用i跟踪有效下标
    		int sign = 1, base = 0, i = 0, n = str.length();
    		//跳过字符串前部空格
    		while(i < n && str.charAt(i) == ' ') ++i;
    		//判断第一个有效字符是否为+ -,并更新sign值
    		if(i < n && (str.charAt(i) == '+' || str.charAt(i) == '-')) {
    			sign = (str.charAt(i++) == '+') ? 1 : -1;
    		}
    		//这里直接进行字符比较,也就是用字符对应的ASCII码进行比较
    		while(i < n && str.charAt(i) >= '0' && str.charAt(i) <= '9') {
    			//判断溢出
    			if(base > Integer.MAX_VALUE/10 || (base == Integer.MAX_VALUE/10 && str.charAt(i)-'0'>7)){
    				return (sign == 1) ? Integer.MAX_VALUE : Integer.MIN_VALUE; 
    			}
    			base = 10 * base + (str.charAt(i++) - '0');
    		}
    		return base * sign;
    	}
    }
    

    参考

    https://leetcode-cn.com/problems/string-to-integer-atoi/

  • 相关阅读:
    5.4、获取对象信息
    5.3、继承和多态
    JS基础-组成
    js定时器
    js 原型链,继承,闭包,内存,泄露
    flex 布局
    点击导出table表格
    图片利用 new Image()预加载原理 和懒加载的实现原理
    js控制style样式
    自定义指令的用法
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860100.html
Copyright © 2020-2023  润新知