代码拉取完成,页面将自动刷新
同步操作将从 shyiran/php-leetcode 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<?php
/**
* @Time: 2021/2/5
* @DESC: 1208. 尽可能使字符串相等
* 给你两个长度相同的字符串,s 和 t。
* 将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] - t[i]| 的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。
* 用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。
* 如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,则返回可以转化的最大长度。
* 如果 s 中没有子字符串可以转化成 t 中对应的子字符串,则返回 0。
* 示例 1:
输入:s = "abcd", t = "bcdf", cost = 3
输出:3
解释:s 中的 "abc" 可以变为 "bcd"。开销为 3,所以最大长度为 3。
* @param $s
* @param $t
* @param $maxCost
* @return int|mixed
* @link: https://leetcode-cn.com/problems/get-equal-substrings-within-budget/
*/
function equalSubstring($s, $t, $maxCost) {
$len = strlen($s);
if ($s == $t) return $len;
$maxLen = 0;
$s = stringToAsciiArr($s);
$t = stringToAsciiArr($t);
$current_sum = 0;
$left = $right = 0;
while ($right < $len) {
if ($right < $len) {
$current_sum += abs($s[$right] - $t[$right]);
$right++;
}
while ($current_sum > $maxCost && $left < $len) {
$current_sum -= abs($s[$left] - $t[$left]);
$left++;
}
if ($current_sum <= $maxCost) {
$maxLen = max($maxLen, $right - $left);
}
if ($right == $len) $left++;
}
return $maxLen;
}
function stringToAsciiArr($str) {
$arr = str_split($str);
foreach ($arr as $k => $item) {
$arr[$k] = ord($item);
}
return $arr;
}
$s = 'abcd';
$t = 'abcd';
$maxCost = 1;
$t = "krrgw";
$s = "zjxss";
$maxCost = 19;
var_dump(equalSubstring($s,$t,$maxCost));
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。