字符串转数字(LeetCode)

问题:String to Integer(atoi)
思路:

  1. 先去除可能字符串首尾可能存在的空格,并且排除空字符串或只含空格的可能;
  2. 然后判断剩余字符串的首位是不是“-”或“+”,如果是就去掉并标记;
  3. 循环遍历剩余字符串,直到遇到不是数字的字符,并保存之前的数字;
  4. 判断是否溢出;
  5. 返回结果。

代码使用java

class Solution {
    public int myAtoi(String str) {
        String str1 = str.trim();
        String str2 = str1;
        int note=0;  // note用于标记正负,0表示正,1表示负
        if(str1.equals("")) {
        	return 0;
        }
        if((str1.substring(0,1).equals("-"))) {
        	str2 = str1.substring(1,str1.length());
        	note = 1;
        }else if(str1.substring(0,1).equals("+")) {
        	str2 = str1.substring(1,str1.length());
        }
        int a = 0;
        for(int i=1;i<=str2.length();i++){
        	if(!Character.isDigit(str2.charAt(i-1))){ //判断当前位置的字符是否为数字
        		break;
        	}
        	try {
            a = Integer.parseInt(str2.substring(0,i));  //Integer.parseInt函数只能接受整数,如果不是整数或者溢出则会报错,利用这一点判断a是否溢出
            }catch (Exception e) {
            	if(note==1) {
            		a=-2147483648;
            	}else {
            		a=2147483647;
            	}
			}
        }
        if(note==1) {
        	a=-a;
        }
        return a;
    }
}

你可能感兴趣的:(leetcode每日一题)