8. String to Integer (atoi)

  • Question Description
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • My Key
package LeetCode;
public class Test {
      
      public static void main(String[] args) {
            System.out.println(myAtoi("+12345"));
            System.out.println(myAtoi("-12345"));
            System.out.println(myAtoi("0000012345"));
            System.out.println(myAtoi("000001234500"));
            System.out.println(myAtoi("a1234500"));
            System.out.println(myAtoi("12   34500"));
            System.out.println(myAtoi("1234500a"));
            System.out.println(myAtoi("  +0 123"));
            System.out.println(myAtoi("-2147483649"));
            System.out.println(myAtoi("1234500 - 12"));
            System.out.println(myAtoi("0-1"));
      }
      
       public static int myAtoi(String str) {
             char[] strArr = str.toCharArray();
             
             int rev = 0;
             int i = 0;
             int flag = 1;
             
             //1. 1st letter
             for (i = 0; i < strArr.length; i++) {
                   if (Character.isWhitespace(strArr[i])){
                         continue;
                   } else if (!Character.isDigit(strArr[i])) {
                         if (strArr[i] == '+') {
                               flag = 1;
                               i++;
                               break;
                         } else if (strArr[i] == '-') {
                               flag = -1;
                               i++;
                               break;
                         } else {
                               System.out.println(str + "is not valid  string.");
                               return 0;
                         }
                   } else if (strArr[i] == '0') {
                         i++;
                         break;
                   } else {
                         rev =  Integer.valueOf(String.valueOf(strArr[i]))*flag;
                         i++;
                         break;
                   }
             }
             
            int j = 0;
            if (i != strArr.length) {
                  j = i;
            }
            for (j=i; j < strArr.length; j++) {
                  if (!Character.isWhitespace(strArr[j])){
                        if (!Character.isDigit(strArr[j])) {
                              break;
                        } else {
                              if (flag == 1) {
                                    int a =  Integer.valueOf(String.valueOf(strArr[j]));
                                    
                                    if (rev > Integer.MAX_VALUE/10 ||  (rev ==  Integer.MAX_VALUE/10 && a >= 7)) {
                                     return Integer.MAX_VALUE;
                              }
                                    
                                    rev *= 10;
                                    rev += a;
                              } else if (flag == -1) {
                                    System.out.println("fafa" + rev);
                                    int a =  Integer.valueOf(String.valueOf(strArr[j]));
                                    
                                   if (rev < Integer.MIN_VALUE/10 ||  (rev ==  Integer.MIN_VALUE/10 && a > 8)) {
                                     return Integer.MIN_VALUE;
                               }
                                   
                                   rev *= 10;
                                   rev -= a;
                              }
                        }
                  } else {
                        break;
                  }
            }
            
            return rev;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值