zoukankan      html  css  js  c++  java
  • [PHP] 算法-将一个字符串转换成一个整数的PHP实现

    题目描述
    将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
    
    示例1
    输入
        +2147483647
        1a33
    输出
        2147483647
        0
    思路:
    1.处理负号
    2.处理正号
    3.字符串中包含非数字字符的直接返回0
    4.'0'字符的ascii码是48
    4.遍历字符串,从0位置开始扫描,当前数字字符ascii码减去'0'字符ascii码,就应该是当前位置的整型
    
    StrToInt(str)
        if empty(str) return 0
        symbol=1
        if str[0]=='+' 
            symbol=1; str[0]='0'
        if str[0]=='-'
            symbol=-1; str[0]='0'
        res=0
        for i=0;i<str.size;i++
            if(str[i]<'0' || str[i]>'9') //包含非数字字符的,直接返回0
                res=0 break;
            res=res*10+str[i]-'0'  //进位用和ascii相减算出整型数字
        res=symbol*res //加上正负号
        return res
    <?php
    function StrToInt($str){
            if (empty($str)){return 0;} 
            $symbol=1;
            if ($str{0}=='+'){ 
                    $symbol=1; 
                    $str{0}='0';
            }   
            if ($str[0]=='-'){
                    $symbol=-1; 
                    $str{0}='0';
            }   
            $res=0;
            for ($i=0;$i<strlen($str);$i++){
                    if($str{$i}<'0' || $str{$i}>'9'){ //包含非数字字符的,直接返回0
                            $res=0;
                            break;
                    }   
                    $res=$res*10+$str{$i}-'0'; //进位用和ascii相减算出整型数字
            }   
            $res=$symbol*$res; //加上正负号
            return $res;
    }
    $s="-123";
    $res=StrToInt($s);
    var_dump($res);
  • 相关阅读:
    POJ 1185 炮兵阵地 经典的 状态压缩dp
    hdu 1565 方格取数(1) 状态压缩dp
    poj Corn Fields 状态压缩dp。
    fzu 2138 久违的月赛之一 容斥。
    fzu 2136 取糖果 好几种方法解决。
    hdu 1231 最大连续子序列
    选择排序
    SharedPrefernces使用实例讲解
    SharedPrefernces使用实例讲解
    可以ping通,但是不能connect
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9853350.html
Copyright © 2011-2022 走看看