zoukankan      html  css  js  c++  java
  • [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/

  • 相关阅读:
    利用栈进行表达式的求值
    最近的一些安排
    一点碎语
    POJ 1008
    目前的进度~
    算是一个决定吧~
    C语言知识点注意事项分类整理[不定期更新]
    一年多了,该回来了……
    真悲剧
    google面试题一道
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860100.html
Copyright © 2011-2022 走看看