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 }
  • 相关阅读:
    (转载) MTK芯片不开机必杀全攻略
    <19> MTK10A 修改模拟时钟表盘、表针的显示模式
    (转载) MTK flash
    (转载) MTK申请内存
    (转载) 标准C中的字符串操作函数
    pcb布线时线宽与耐流的关系
    (转载) vb6的数据类型
    (转载) MTK驱动开放基础知识
    (转载) MTK常用函数及宏定义
    xx了Windows正版验证
  • 原文地址:https://www.cnblogs.com/fankongkong/p/7460187.html
Copyright © 2011-2022 走看看