字符串问题----将整数字符串转换成整数值

将整数字符串转换成整数值

  

  给定一个字符串str,如果str符合日常书写的规范,并属于32位整数的范围,返回str所代表的整数值,否则返回0。如 023, A13, 2147483648,均返回0。

  【解题思路】

  定义四个变量,flag表示正负,res表示结果,minq表示最小值除以10的商,minr表示最小值除以10 的余数。因为最小值是 -2147483648,最大值是2147483647,负数有更大的范围,所以以负数的形式保留绝对值,最后根据flag进行修改。

package com.test;

/**
 * Created by Demrystv.
 */
public class convertNumAtr2NumVal {

    public int convert(String str){
        if (str == null || str.equals("")){
            return 0;
        }

        //不符合格式要求,不能转
        char[] chars = str.toCharArray();
        if (!isValid(chars)){
            return 0;
        }

        boolean flag = chars[0] == ‘-‘ ? false : true;
        int minq = Integer.MIN_VALUE / 10;
        int minr = Integer.MIN_VALUE % 10;
        int res = 0;
        int cur = 0;

        for (int i = flag ? 0 : 1; i < chars.length; i++) {
            cur = ‘0‘ - chars[i]; //用当前数字的负数形式
            // 超出范围
            if (cur < minq || (res == minq && cur < minr)){
                return 0;
            }
            res = res * 10 + cur;
        }

        //正好比整数的最大值大1
        if (flag && res == Integer.MIN_VALUE){
            return 0;
        }

        return flag ? -res : res;
    }

    private boolean isValid(char[] chars){

        // A02这种情况
        if (chars[0] != ‘-‘ && (chars[0] < ‘0‘ || chars[0] > ‘9‘ )){
            return false;
        }

        // - 或者 -012 这种情况
        if (chars[0] == ‘-‘ && (chars.length == 1 || chars[1] == 0)){
            return false;
        }

        // 012这种情况
        if (chars[0] == ‘0‘ && chars.length > 1){
            return false;
        }

        // 从第二位开始,对应的是 0B2
        for (int i = 1; i < chars.length; i++) {
            if (chars[i] < ‘0‘ || chars[i] > ‘9‘){
                return false;
            }
        }
        return true;
    }

}

原文地址:https://www.cnblogs.com/Demrystv/p/9557659.html

时间: 2024-10-08 15:39:38

字符串问题----将整数字符串转换成整数值的相关文章

字符串转换成整型

题目:将字符串转换成整型,比如输入"123",输出123.  解题思路: 利用每一个0-9数字字符对应的Ascii减去48就得到了一个0-9的整型数字.用前i-1位表示的整型数字乘以10加上第i位表示的数字,就可以得到转换成的整型了.注意字符串第1个字符也可以是+或-.当字符串第1个字符是-时,用前i-1位表示的整型数字乘以10减去第i位表示的数字,就可以得到转换成的整型了.这样的话,还可以适用前面的数字有0的情况.比如输入"-0123",输出-123.另外还有一个

谭浩强 c程序设计 8.17用递归法将一个整数n转换成字符串。例如,输入486,应输出字符串&quot;486&quot;。n的位数不确定,可以是任意位数的整数。

8.17用递归法将一个整数n转换成字符串.例如,输入486,应输出字符串"486".n的位数不确定,可以是任意位数的整数. #include <stdio.h> char str1[20];int i=0;long n;int main(){        int longToStr(long n);    char *revstr(char *str, int len);    printf("请输入一个整数n:\n");    scanf("

atoi函数的使用(将字符串转换成整型数)

原型: int atoi(const char *nptr); 头文件:#include <stdlib.h> 简介 atoi(ascii to integer):是把字符串转换成整型数的一个函数.atoi( ) 函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等.--百度百科 栗子: #include<iostream> #include<stdio.h> #include<cstdlib> using namespace std;

Leetcode8---&gt;String to Integer(实现字符串到整数的转换)

题目: 实现字符串到整数的转换 解题思路: 下面给出这道题应该注意的一些细节: 1. 字符串“    123   ” = 123: 2.   字符串“+123” = 123: 3.   字符串“-123” = -123: 4.   字符串“-” = 0:“+” = 0: 5.   字符串“123-” = 123: 6.   字符串“21474836478” = 2147483647(Integer.MAX_VALUE) 7.   其余情况都是非法输入,一律返回0: 代码如下: 1 public

整数1转换成字符串&quot;001&quot;的简单方法

如何将整数1转换成字符串"001"这个问题,涉及到一个概念:字符串格式化. 常用的字符串格式化命令叫做:sprintf,下面举例说明. int i = 8; char array[4]; sprintf(array,"%.3d",i); string s = array; 另外附上一篇文章:string 与char* char[]之间的转换 http://blog.csdn.net/cogbee/article/details/8931838

将整数n转换成字符串的方法

最近做一个题,用递归方法将整数n转换成为字符串,做了半天做好了才发现有一个库函数直接就可以实现这个功能,真是日了狗了.... 小二,上代码... #include<stdio.h> #include<stdlib.h> #include<string.h> //  这个turnover函数是为了将字符串调转过来,因为convert函数中将n转换成字符串后字符串是倒着的 //  就是利用了一个中间变量将字符串数组s首尾依次交换 char *turnover(char *s

将字符串转成整数的函数给我看一下吗,简单看一下代码基本功。要求:不要调用parseInt等转换函数

为了提高面试流程效率,方便用java写一段将字符串转成整数的函数给我看一下吗,简单看一下代码基本功. 要求:不要调用parseInt等转换函数.按位读取字符串里的字符进行处理将字符串转化为整数, 不考虑整数溢出问题,给定的输入一定是合法输入不包含非法字符,字符串头尾没有空格, 考虑字符串开头可能有正负号.public int StringToInt(String str) import javax.net.ssl.SSLContext; /** * 字符串转为int * @author IT *

JS怎么把字符串数组转换成整型数组

比如有一个字符串: const dataStr="1,2,3,4,5"; 现在需要把它分割为int型数组: let dataIntArr=[1,2,3,4,5]; 方法有很多种.这里讲两个有意思的 let dataStr="1,2,3,4,5"; //原始字符串 let dataStrArr=dataStr.split(","); //分割成字符串数组 let dataIntArr=[];//保存转换后的整型字符串 //方法一 dataStrAr

剑指offer 把字符串转化为整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入 +2147483647 1a33 输出 2147483647 0 思路:字符串转化为整数的方法num = num * 10 + str[i] - '0':特殊情况:1.输入字符串为NULL: 2.输入字符串只有+/-: 3.转化的数字大于最大值或小于