3 字符串

1 字符串(String)是由零个或多个字符组成的有限序列。

1.1 自定义一个函数实现字符串转整数的功能

特殊情况

  1. 能够排除首部的空格,从第一个非空字符开始计算
  2. 允许数字以正负号(+-)开头
  3. 遇到非法字符便停止转换,返回当前已经转换的值,如果开头就是非法字符则返回 0
  4. 在转换结果溢出时返回特定值,这里是最大/最小整数

测试用例

  " 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)
posted @ 2019-10-16 20:59  代号H  阅读(174)  评论(0编辑  收藏  举报