leetcode之String to Integer (atoi)
‘\0’是c/c++语言中的字符串结束符,在ASCII字符集中对应数字0。
java中不是。
另外字符相减是ASSIC码相减
0的ASSIC码是49
这道题是剑指offer上的第49题,模拟了整个面试的过程。一定要注意代码的鲁棒性,边界条件以及空,或者特殊值
下面附上AC代码,用java实现和书上的略不同,不过思想是一致的:
public int myAtoi(String str) { if(str == null){ return 0; } str = str.trim(); if(str.length()==0){ return 0; } int sign = 1; int index = 0; if(str.charAt(index)=='+'){ index++; }else if(str.charAt(index)=='-'){ sign = -1; index++; } long num = 0; for(;index<str.length();index++){ if(str.charAt(index)<'0'||str.charAt(index)>'9') break; num = num*10 + (str.charAt(index)-'0'); if (num > Integer.MAX_VALUE ) { break; } } if (num * sign >= Integer.MAX_VALUE) { return Integer.MAX_VALUE; } if (num * sign <= Integer.MIN_VALUE) { return Integer.MIN_VALUE; } return (int)num * sign; }