49、把字符串转为整数

思路:合法字符的话,取得该位数字并不断*10相加

注意:

  • 输入的是非法字符,null,,有非数字的字符
  • 输入的有正负号
  • 只输入+,-
  • 有没有超出最大最小的整数

public class Solution {
    public int StrToInt(String str) {
        boolean legal ;//是否合法输入
        if(str == null || str.length() == 0){
            return 0;

        }
        String s = str.trim();//去掉首位字符
        int len = s.length();
        int sign = 1;//符号标志位,1为正
        int result = 0;//返回的结果
        int limit= Integer.MAX_VALUE;//整数最大值/最小值
        int i = 0;//遍历字符每个元素
       //第一个字符非数字,只有一个符号时
        if(s.charAt(0) < ‘0‘){
            if(s.charAt(0) == ‘-‘) {
                limit = Integer.MIN_VALUE;
                sign = -1;
            } else if (s.charAt(0) != ‘+‘) {
                return 0;
            }
            if(len == 1) {
                return 0;

            }
            i++;//
        }

        while(i < len){
            int c = s.charAt(i) - ‘0‘;
            if(c >= 0 && c <= 9){
                //溢出处理
                if(sign > 0 && (result > limit / 10 ||(result == limit / 10 &&  c > limit % 10))){
                    return 0;

                } else if (sign < 0 && (result > -(limit / 10) || (result == -(limit / 10) && c > -(limit % 10)))){
                    return 0;

                }
                result = result * 10 + c;
                i++;
            } else {
                return 0;
            }
        }
        legal = true;
       return sign > 0 ? result : -result;
    }
}

测试:

功能测试:输入的字符串为正、负和0

边界值:最大最小的整数

输入null,非法字符,只有一个符号的,数字掺杂非法字符。

时间: 2024-11-03 21:43:05

49、把字符串转为整数的相关文章

[LeetCode] String to Integer (atoi) 字符串转为整数

Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases. Notes: It is intended for this problem to be spe

整数装换为字符串intToArray与字符串转为整数 arrayToInt实现

7.  整数装换为字符串itoa的实现 1 char *intToArray(int number, char *str) 2 { 3 if(str == NULL) 4 { 5 return NULL; 6 } 7 char *ret = str; 8 char *left = str; 9 char temp = '\0'; 10 // 负数的处理 11 if(number < 0) 12 { 13 number = -number; 14 *ret++ = '-'; 15 left++;

LeetCode刷题-008字符串转为整数

实现 atoi,将字符串转为整数.在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值.如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数.字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响.当字符串中的第一个非空字符序列不是个有效的整数:或字符串为空:或字符串仅包含空白字符时,则不进行转换.若函数不能执行有效的转换,返回 0

Leetcode篇:字符串转为整数

@author: ZZQ @software: PyCharm @file: myAtoi.py @time: 2018/9/20 20:54 要求:实现 atoi,将字符串转为整数. 1)根据需要丢弃任意多的空格字符,直到找到第一个非空格字符为止 2)如果第一个非空字符是正号或负号,选取该符号: 3) 将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值. 4) 如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数. 5) 字符串可以在形成整数的字符后面包括多余

【剑指Offer-面试案例】面试题66:把字符串转为整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 思路 首先判断该数字是整数还是负数,然后在转换的过程中判断字符串表示的数字是否溢出.题目的数字范围是有符号的int型整数,有符号的int型整数(4个字节)的范围为-2147483648 ~ +2147483647,也就是-0x80000000~0x7FFFFFFF.代码如下: class Solution { public: int StrToInt(string str)

【简单算法】17.字符串转整数(atoi)

题目: 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值.如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数. 字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响. 当字符串中的第一个非空字符序列不是个有效的整数:或字符串为空:或字符串仅包含空白字符时,则不进行转换. 若函数不能执行有效

leetcode 字符串转整数(atoi)

实现atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值.如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数. 字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响. 当字符串中的第一个非空字符序列不是个有效的整数:或字符串为空:或字符串仅包含空白字符时,则不进行转换. 若函数不能执行有效的转换,返

字符串转换整数 (atoi) C++实现 java实现 leetcode系列(八)

字符串转换整数 (atoi) java实现 C++实现 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号:假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数. 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响. 注意:假如

[笔记]一道C语言面试题:IPv4字符串转为UInt整数

题目:输入一个IPv4字符串,如“1.2.3.4”,输出对应的无符号整数,如本例输出为 0x01020304. 来源:某500强企业面试题目 思路:从尾部扫描到头部,一旦发现无法转换,立即返回,减少无谓操作. #include "stdio.h" #include "stdlib.h" #include "string.h" bool ConvertIPv4ToUInt(const char *strIP, unsigned int *ip) {