数据范围:两个数字的长度都满足 ,数字中仅包含 ,第一位不可能是0
<?php /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num1 string字符串 * @param num2 string字符串 * @return string字符串 */ function substring( $num1 , $num2 ) { // write code here $r1 = strlen($num1); $r2 = strlen($num2); $isZ = true;//相减是否是正数 if($r1<$r2){ $isZ = false; $tmp = $num1; $num1 = $num2; $num2 = $tmp; $r1 = $r1^$r2; $r2 = $r1^$r2; $r1 = $r1^$r2; }else if($r1 === $r2){ if($num1 === $num2)return 0; for($i = 0;$i < $r1;$i++){ if($num1[$i] === $num2[$i]){ continue; } if($num1[$i] > $num2[$i]){ break; }else{ $isZ = false; $tmp = $num1; $num1 = $num2; $num2 = $tmp; break; } } } $resStr = ''; $add = 0; //进位 $i = 1; while( $r1 >= $i ){ $value = (int) $num1[-$i] + $add; //被减数 $diff = 0; //减数 if(isset($num2[-$i])){ $diff = (int) $num2[-$i]; } if($value < $diff){ $value += 10; $add = -1; }else{ $add = 0; } $resStr = ($value - $diff).$resStr; $i++; } return $isZ?ltrim($resStr,'0'):'-'.ltrim($resStr,'0'); }