zoukankan      html  css  js  c++  java
  • 49、把字符串转换成整数

    一、题目

    题目描述

    将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

    输入描述:

    输入一个字符串,包括数字字母符号,可以为空

    输出描述:

    如果是合法的数值表达则返回该数字,否则返回0
    示例1

    输入

    +2147483647
        1a33

    输出

    2147483647
        0

    二、解法

     1 public class Solution {
     2    /* public int StrToInt(String str) {
     3          if(str.equals("") || str.length() == 0)
     4                 return 0;
     5             char[] a = str.toCharArray();
     6             int fuhao = 0;
     7             if(a[0] == '-')
     8                 fuhao = 1;
     9             int sum = 0;
    10             for(int i = fuhao; i < a.length;i++){
    11                 if(a[i] == '+')
    12                     continue;
    13                 if(a[i]<48 || a[i]>57)
    14                     return 0;
    15                 sum = sum*10 + a[i]-48;
    16             }
    17             return fuhao == 0 ? sum : sum*-1;
    18         
    19     }*/
    20     // 设置一个全局变量,来判断:当输出为0时,是字符串输入异常还是输入字符串为'0'
    21     public static boolean flag;
    22     public int StrToInt(String str) {
    23         flag = false;
    24         //判断输入是否合法
    25         if(str == null || str.trim().equals("")){
    26             flag = true;//输入异常
    27             return 0;
    28         }
    29         //symbol=0,说明该数为正数;symbol=1,该数为负数;start用来区分第一位是否为符号位
    30         int symbol = 0;
    31         int start = 0;//start等于1表示第一位是符号位
    32         char[] chars = str.trim().toCharArray();
    33         if(chars[0] == '+'){
    34             start = 1;
    35         }else if(chars[0] == '-'){
    36             start = 1;
    37             symbol = 1;
    38         }
    39         int result = 0;
    40         for(int i = start; i < chars.length; i++){
    41             if(chars[i] > '9' || chars[i] < '0'){
    42                 flag = true;//输入异常
    43                 return 0;
    44             }
    45             result = result*10+chars[i]-48;
    46             if(symbol == 0 && result > Integer.MAX_VALUE){
    47                 flag = true;//输入异常
    48                 return 0;
    49             }
    50             if(symbol == 1 && result < Integer.MIN_VALUE){
    51                 flag = true;//输入异常
    52                 return 0;
    53             }
    54         }
    55         return symbol==0?result:result*(-1);
    56     }
    57 }
  • 相关阅读:
    【转】QPainter中坐标系变换问题
    【转】Python3 (入门6) 库的打包与安装
    【转】Python3 操作符重载方法
    【转】Python3 日期时间 相关模块(time(时间) / datatime(日期时间) / calendar(日历))
    正则表达式过滤HTML、JS、CSS
    JavaScript的类型转换
    JavaScript的数据类型,值和变量
    JavaScript介绍
    Ant学习笔记
    GeoServer端口配置
  • 原文地址:https://www.cnblogs.com/fankongkong/p/7460187.html
Copyright © 2011-2022 走看看