leetcode之String to Integer
2014-04-21 14:14
127 查看
Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
此题的难点在于将给定String s的形式考虑全面,及溢出的问题判断。
1、将s首尾的空格删除
2、看s第一个字符是否为数字的正负符号,如果是,则记录下该符号并将该字符从s中删除
3、根据正常的数字习惯,整型数字左侧第一位要么为符号,要么为一非0的数字,所以记录好符号后, 就判断s首字符是否为0,如是,则删去,重复此步骤,直到首字符不为0;
4、准备工作做好后,就开始转换工作了。遍历s,用result记录返回结果,如s当前位置的字符不是数字,则返回result;如是,则将其存入tmp,此时要判断是否溢出。由于我们是从前往后遍历s,所以每次从s中取得一个数字时,都要将result * 10;
判断溢出的表达式是:result > (Integer.MAX_VALUE - tmp) / 10
如果不满足条件,则循环继续;直到循环结束
源代码如下:
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
此题的难点在于将给定String s的形式考虑全面,及溢出的问题判断。
1、将s首尾的空格删除
2、看s第一个字符是否为数字的正负符号,如果是,则记录下该符号并将该字符从s中删除
3、根据正常的数字习惯,整型数字左侧第一位要么为符号,要么为一非0的数字,所以记录好符号后, 就判断s首字符是否为0,如是,则删去,重复此步骤,直到首字符不为0;
4、准备工作做好后,就开始转换工作了。遍历s,用result记录返回结果,如s当前位置的字符不是数字,则返回result;如是,则将其存入tmp,此时要判断是否溢出。由于我们是从前往后遍历s,所以每次从s中取得一个数字时,都要将result * 10;
判断溢出的表达式是:result > (Integer.MAX_VALUE - tmp) / 10
如果不满足条件,则循环继续;直到循环结束
源代码如下:
public class StringToInteger { public static int atoi(String s) { s = s.trim(); int result = 0, radix = 10; if(s.equals("")) return 0; char fuhao = '+'; if(s.charAt(0) == '-') { fuhao = '-'; s = s.substring(1); }else if(s.charAt(0) == '+'){ fuhao = '+'; s = s.substring(1); } while(s.charAt(0) == '0') s = s.substring(1); for(int i = 0; i < s.length(); ++ i ) { if(Character.isDigit(s.charAt(i))) { int tmp = Character.digit(s.charAt(i), 10); if(result > (Integer.MAX_VALUE - tmp) / 10) { if(fuhao == '-') return Integer. MIN_VALUE; else return Integer.MAX_VALUE; } result = result * radix + tmp; }else break;; } if(fuhao == '-') return 0 - result; return result; } public static void main(String[] args) { // TODO Auto-generated method stub String s = " -11919730356x"; System.out.println(atoi(s)); // System.out.println(Character.digit('9', 10)); } }
相关文章推荐
- leetcode8 String to Integer (atoi)
- Leetcode008-String to Integer (atoi)
- leetcode (8) - String to Integer
- LeetCode 8. String to Integer (atoi)
- LeetCode-Algorithms #008 String to Integer(atoi), Database #183 Customers Who Never Order
- leetcode String to Integer (atoi)
- 【LeetCode-面试算法经典-Java实现】【008-String to Integer (atoi) (字符串转成整数)】
- LeetCode 8 — String to Integer (atoi)(C++ Java Python)
- 【leetcode】【8】String to Integer (atoi)
- [LeetCode][8]String to Integer (atoi)解析与模仿Java源码实现 -Java实现
- leetcode 8. String to Integer (atoi)
- [LeetCode]String to Integer (atoi)
- leetcode-8 String to Integer
- leetcode String to Integer (atoi)
- [LeetCode] String to Integer (atoi)
- Leetcode || String to Integer (atoi)
- [LeetCode] String to Integer (atoi)
- LeetCode--string-to-integer-atoi(atoi库函数的实现)
- LeetCode String to Integer (atoi)
- Leetcode29:String to Integer (atoi)