码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer系列53---字符串转化成整数

时间:2016-06-30 19:55:36      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

【题目】将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数
* 【】整数(32位)最大值:0X7fff ffff( 0111 1111 1111 1111 1111 1111 1111 1111 (0代表正号))
* 最小值:0x8000 0000( 1000 0000 0000 0000 0000 0000 0000 0000 (1代表负号))

 1 package com.exe10.offer;
 2 
 3 /**
 4  * 【题目】将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数
 5  * 【】整数(32位)最大值:0X7fff ffff( 0111 1111 1111 1111 1111 1111 1111 1111 (0代表正号))
 6  *                 最小值:0x8000 0000( 1000 0000 0000 0000 0000 0000 0000 0000 (1代表负号))
 7  * @author WGS
 8  *
 9  */
10 public class StrToInt {
11     boolean isValid=true;//定义个全局变量表示发生溢出
12     
13     
14     public int strToInt(String str){
15         if(str==null) return -1;    
16         long sum=0;
17         int begin=0;//起始字符
18         boolean minus=false;//默认为正号
19         if(str!=null && !str.equals("")){
20             char firstChar=str.charAt(begin);
21             if(firstChar==‘+‘){
22                 begin++;
23             }else if(firstChar==‘-‘){
24                 begin++;
25                 minus=true;//为负数
26             }
27             sum=strToInt(str,minus,begin);
28         }else{
29             //非法输入:当输入为"" 的时候
30             isValid=false;
31         }
32         //System.out.println(isValid);
33         return (int)sum;
34         
35     }
36 
37     private long strToInt(String str, boolean minus, int begin) {
38         int flag=minus?-1:1;
39         long sum=0;
40         int index=begin;
41         
42         while(index<str.length()){
43             
44             char curChar=str.charAt(index);
45             if(curChar>=‘0‘ && curChar<=‘9‘){
46                 sum=sum*10+flag*(curChar-‘0‘);
47                 
48                 //假如越界的话
49                 if((minus && sum<Integer.MIN_VALUE) || //MIN_VALUE==0x80000000
50                         (!minus &&sum>Integer.MAX_VALUE ))//MAX_VALUE = 0x7fffffff;
51                     return 0;                
52             }else{
53                 return 0;//字符串中只要出现不是0-9字符即返回0
54             }
55             index++;                        
56         }
57         return sum;
58     }
59 
60     public static void main(String[] args) {
61         StrToInt s=new StrToInt();
62         int num=s.strToInt("");
63         System.out.println(num);
64 
65     }
66 
67 }

 

剑指offer系列53---字符串转化成整数

标签:

原文地址:http://www.cnblogs.com/noaman/p/5630868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!