1. 程式人生 > >[PHP] 算法-將一個字符串轉換成一個整數的PHP實現

[PHP] 算法-將一個字符串轉換成一個整數的PHP實現

empty 當前位置 value 實現 包含 symbol 不能 res 整型

題目描述
將一個字符串轉換成一個整數(實現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);

[PHP] 算法-將一個字符串轉換成一個整數的PHP實現