在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Implement atoi to convert a string to an integer. 1 public static int StringtoInteger(string str) 2 { 3 int i = 0; 4 int sign = 0; 5 int val = 0; 6 7 while (i < str.Length && ((str[i] >= '0' && str[i] <= '9') || str[i] == ' ' || str[i] == '-' || str[i] == '+')) 8 { 9 if ((val == 0 && sign == 0) && str[i] == ' ') 10 i++; 11 else if (str[i] == '-' && sign == 0) 12 { 13 sign = -1; 14 i++; 15 } 16 else if (str[i] == '+' && sign == 0) 17 { 18 sign = 1; 19 i++; 20 } 21 else if (str[i] >= '0' && str[i] <= '9') 22 { 23 //handle overflow, val * 10 + n > int.MaxValue 24 if (val > (int.MaxValue - (str[i] - '0')) / 10) 25 { 26 if (sign == 0 || sign == 1) 27 return int.MaxValue; 28 return int.MinValue; 29 } 30 val = val * 10 + str[i] - '0'; 31 i++; 32 } 33 else 34 { 35 if (sign == 0) 36 return val; 37 return val * sign; 38 } 39 } 40 if (sign == 0) 41 return val; 42 return val * sign; 43 } 代码分析: atoi, 最重要是讨论输入的validation。怎么样的输入才是合法输入,如果碰到不合法的字符,返回什么东西。而且还要处理一下overflow。 当然主要逻辑就是这一句了val = val * 10 + str[i] - '0'; 我这里是按照LeetCode上的Test Case 写的, 迎合大牛的口味。但是面试的时候要跟面试官详细讨论。 |
请发表评论