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


    【题目】将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数
    * 【】整数(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 }
  • 相关阅读:
    Web 前端开发中一些兼容性问题及其解决办法 (持续更)
    沈逸的IT专栏---shenyisyn
    程序员该做的事
    职场需要切忌的几点——《程序员,你伤不起》
    百度天气API接口
    C#简单音乐播放器ListBox歌单列表
    CentOS7 安装java(jre 1.8)
    CentOS7 系统安装与设置
    这个可以有,记录下
    在centos 7中让网卡自启动
  • 原文地址:https://www.cnblogs.com/noaman/p/5630868.html
Copyright © 2020-2023  润新知