[PHP] 算法-將一個字符串轉換成一個整數的PHP實現
阿新 • • 發佈:2018-10-26
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實現