注意审题

1.字符串前后去除空格 trim()
2.可能存在正负号需注意
3.去除前导零
4.之后如果遇到不是数字的直接返回0
5.数字后面不是数字的部分直接break
6.最大值最小值处理

  1. public int myAtoi(String s) {
  2. s = s.trim();
  3. if(s.length() == 0) return 0;
  4. char c = s.charAt(0);
  5. int start = 0,pro = 1;
  6. if(c == '+'){
  7. start++;
  8. }else if(c == '-'){
  9. start++;
  10. pro = -1;
  11. }
  12. for(int i = start;i < s.length(); i ++){
  13. if(s.charAt(i) == '0'){
  14. start++;
  15. }else if((s.charAt(i) - '0') > 9 || (s.charAt(i) - '0') < 0 || s.charAt(i) == ' '){
  16. return 0 ;
  17. }
  18. else break;
  19. }
  20. long num = 0;
  21. int x = 10;
  22. while(start < s.length()){
  23. if(s.charAt(start) == ' ' || (s.charAt(start) - '0') > 9 || (s.charAt(start) - '0') < 0){
  24. break;
  25. }
  26. num = num * x + (s.charAt(start++) - '0');
  27. if(pro*num >= Integer.MAX_VALUE) return Integer.MAX_VALUE;
  28. if(pro*num <= Integer.MIN_VALUE) return Integer.MIN_VALUE;
  29. }
  30. return (int)(pro*num);
  31. }