<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
function solve( $s , $t )
{
//先判断哪个字符串长度较小
if (strlen($s) < strlen($t)) {
$smallStr = $s;
$bigStr = $t;
}else {
$smallStr = $t;
$bigStr = $s;
}
//长度小的字符串补齐
$diffLen = strlen($bigStr) - strlen($smallStr);
for ($i = 0; $i < ($diffLen); $i++) {
$smallStr = "0".$smallStr;
}
$len = strlen($bigStr);
$jin = 0;
for ($pos = $len -1 ; $pos >= 0; $pos--) {
$sum = intval($bigStr{$pos}) + intval($smallStr{$pos}) + $jin;
if ($sum >= 10) {
$res = $sum % 10;
$jin = 1;
$bigStr = substr_replace($bigStr, $sum % 10, $pos, 1);
}else {
$jin = 0;
$bigStr = substr_replace($bigStr, $sum, $pos, 1);
}
}
//如果最后一位还要进位,则增加
if ($jin == 1) {
$bigStr = "1".$bigStr;
}
return $bigStr;
}
//大数相减
function minus($a, $b) {
if (!is_string($a) || !is_string($b)) {
echo '参数必须是字符串类型';
return;
}
$len = strlen($a) > strlen($b) ? strlen($a) : strlen($b);
/// 反转字符串
$ar = strrev($a);
$br = strrev($b);
$result = '';
for($i = 0 ;$i < $len; $i++) {
//从个位开始减,缺的补0
$temp = (empty($ar[$i]) ? 0 : $ar[$i]) - (empty($br[$i]) ? 0 : $br[$i]);
if (!empty($borrowOne)) {
//当后一位借1时减1
$temp -= 1;
}
$borrowOne = false;
if ($temp < 0) {
/// 如果结果是负数 向前借1 加10 做标记
$borrowOne = true;
$temp += 10;
}
$result = $temp . $result;
}
return $result;
}