8. String to Integer (atoi)

Description

Soluction

public class Solution {
	public int myAtoi(String str) {
		char[] numbers = str.toCharArray();
		// sign symbol, 1 for positive, -1 for negative
		int sign = 1;
		// start position
		int start = -1;
		// number to return
		long sum = 0;
		// make sure only one sign symbol
		boolean signExist = false;
		// loop until find the first numerical digit
		for (int i = 0; i < numbers.length; i++) {
			char temp = numbers[i];
			if (temp == ' ') {
				if (signExist == true)
					break;
				else
					continue;
			}
			else if (temp == '+' || temp == '-') {
				if (signExist == false) {
					signExist = true;
					if (temp == '-')
						sign = -1;
					continue;
				} else {
					break;
				}
			} else if (temp >= '0' && temp <= '9') {
				if (start == -1) {
					start = i;
					break;
				}
			}
			else {
				break;
			}
		}
		
		// numerical digits don't exist
		if (start == -1)
			return (int)sum;
		
		
		// combine to a number 
		for (int i = start; i < numbers.length; i++) {
			if (numbers[i] >= '0' && numbers[i] <= '9') {
				sum = sum * 10 + (numbers[i] - '0');
				if (sum*sign > Integer.MAX_VALUE) {
					sum = Integer.MAX_VALUE;
					break;
				}
				if (sum*sign < Integer.MIN_VALUE) {
					sum = Integer.MAX_VALUE + 1;
					break;
				}
			} else {
				break;
			}
		}
		
		return (int)sum*sign;
	}
}

  

posted @ 2020-01-04 11:20  一锅Biger粥  阅读(97)  评论(0)    收藏  举报