1 字符串(String)是由零个或多个字符组成的有限序列。
1.1 自定义一个函数实现字符串转整数的功能
特殊情况
- 能够排除首部的空格,从第一个非空字符开始计算
- 允许数字以正负号(+-)开头
- 遇到非法字符便停止转换,返回当前已经转换的值,如果开头就是非法字符则返回 0
- 在转换结果溢出时返回特定值,这里是最大/最小整数
测试用例
" 010"," +004500"," -001+2a42"," +0 123" ,"-2147483648", "2147483648",
" - 321", " -11919730356x" ,"9223372036854775809"
正确输出
10,4500,-1 ,0,-2147483648,2147483647,0,-2147483648,2147483647
1 public static int atoi(String s) 2 { 3 if(s == null || s.length() == 0) 4 return 0; 5 char[] array = s.toCharArray(); 6 long result = 0; /* 要返回的结果 */ 7 int pos = 0; /* 记录空格出现的位置 */ 8 int count = 0; /* 记录'+'或'-'出现的次数 */ 9 int flag = 1; /* 判断正负数 */ 10 for(int i = 0; i < array.length; i++) 11 { 12 Character c = array[i]; 13 if(c >= '0' && c <= '9') 14 { 15 result = result * 10 + c - '0'; 16 if(flag == 1 && result > Integer.MAX_VALUE) 17 return Integer.MAX_VALUE; 18 else if(flag == -1 && -result < Integer.MIN_VAlUE) 19 return Integer.MIN_VALUE; 20 pos++; 21 } 22 else if(c == ' ' && pos == 0 && count == 0) 23 continue; 24 else if(c == '+' && count == 0) 25 count = 1; 26 else if(c == '-' && count == 0) 27 { 28 flag = -1; 29 count = 1; 30 } 31 else 32 { 33 return (int)(flag * result); 34 } 35 } 36 return (int)(flag * result); 37 }
1.2 关于 Java 中 length、length()、size() 的区别
- length:数组的属性;
- length():String的方法;
- size():集合/映射的方法;(List、Set、Map)