概述
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.
定位:中等题
题目要求实现字符串转化为数字功能,但要考虑多种情况:
- 如果字符串为空,返回0;
- 从头开始读取,读到‘ ’字符均舍弃,一直读到有内容为止;
- 第一个读到内容如果不是数字或者-或+,返回0;
- 如果第一个是+-号,第二个还是,返回0;
- 如果第一个的+-号,第二个是数字或者如果第一个就是数字,开始计数;
- 如果计数时超出int_32bit范围,返回范围界限的值;
- 读到结束或者读不到数字了将计数返回。
Java实现:
1 public class Solution { 2 public int myAtoi(String str) { 3 int len= str.length(); 4 int index=0; 5 Character now; 6 boolean flag = false; 7 long re=0; 8 if(len<=0) return 0; 9 while(str.charAt(index)==' ') { 10 index++; 11 if(index>=len) return 0; 12 } 13 now=str.charAt(index); 14 if(now=='-'||now=='+'||(now<='9'&&now>='0')) { 15 if((now<='9'&&now>='0')) {} 16 else{ 17 if(now=='-') flag = true; 18 index++; 19 if(index>=len) return 0; 20 now=str.charAt(index); 21 if((now<='9'&&now>='0')) {} 22 else return 0; 23 } 24 }else return 0; 25 while(index<len){ 26 now=str.charAt(index); 27 if(now<='9'&&now>='0') { 28 re=re*10+(str.charAt(index)-'0'); 29 if(re>=Integer.MAX_VALUE||re<=Integer.MIN_VALUE) break; 30 }else break; 31 index++; 32 } 33 if(flag==true) { 34 re=-re; 35 re=re<Integer.MIN_VALUE?Integer.MIN_VALUE:re; 36 }else { 37 re=re>Integer.MAX_VALUE?Integer.MAX_VALUE:re; 38 } 39 return (int)re; 40 } 41 }
转载于:https://www.cnblogs.com/zaritiy/p/7040480.html
最后
以上就是孤独月饼为你收集整理的LeetCode 008 String to Integer (atoi) - Java的全部内容,希望文章能够帮你解决LeetCode 008 String to Integer (atoi) - Java所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复