LeetCode: String to Int

来源:互联网 发布:鬼吹灯网络剧 编辑:程序博客网 时间:2024/05/22 00:34

此题在Leetcode上判定的规则与剑指offer上面有点不同,Leetcode上对于如下输入“      +12a43” , 输出为12,而剑指offer则判定为非法输入,即输出为0;

而对于溢出的情况,如上溢或下溢,即正数>0x7FFFFFFF或负数<0x80000000,则输出为0x7FFFFFFF或0x80000000, 而剑指offer则判定为溢出,即输出为0.


import java.util.Scanner;public class StringToInt {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubScanner scan = new Scanner(System.in);String str = scan.nextLine();StringToInt sti = new StringToInt();System.out.println(sti.atoi(str));}public int atoi(String str){int result = 0;if(str==null||str.length()==0){return 0;}boolean negative = false;int length = str.length();int i = 0;while(str.charAt(i)==' '){i++;}if(str.charAt(i)=='+'){negative = false;result = (int)stringtoint(str.substring(i+1, length), negative);}else if(str.charAt(i)=='-'){negative = true;result = (int)stringtoint(str.substring(i+1, length), negative);}else{result = (int)stringtoint(str.substring(i,length), negative);}return result;}public long stringtoint(String str, boolean negative){if(str==null||str.length()==0){return 0;}int i = 0;long result = 0;int flag = (negative==true)?-1:1;while(i<str.length()){if(str.charAt(i)>='0'&&str.charAt(i)<='9'){result = result*10+flag*(str.charAt(i)-'0');if((negative==true&&result<0x80000000)||(negative==false&&result>0x7FFFFFFF)){if(negative==false){return 0x7FFFFFFF;}elsereturn 0x80000000;}i++;}elsereturn result;}return result;}}

 



0 0
原创粉丝点击