首页 > 后端开发 > php教程 > 运算后字符串的最小长度

运算后字符串的最小长度

DDD
发布: 2025-01-13 22:30:46
原创
244 人浏览过

Minimum Length of String After Operations

3223。运算后字符串的最小长度

难度:中等

主题: 哈希表、字符串、计数

给你一个字符串 s。

您可以对任意次执行以下过程:

  • 在字符串中选择一个索引 i,使得索引 i 左侧至少有 一个字符等于 s[i],并且 至少 一个字符右边也等于 s[i].
  • 删除索引 i 的
  • 左边 等于 s[i] 的 最接近的 字符。
  • 删除索引 i 的
  • 右边 等于 s[i] 的 最接近的 字符。
返回

可以达到的最终字符串s的最小长度

示例1:

  • 输入: s = "abaacbcbb"
  • 输出: 5
  • 说明:我们执行以下操作:
      选择索引 2,然后删除索引 0 和 3 处的字符。生成的字符串为 s = "bacbcbb"。
    • 选择索引 3,然后删除索引 0 和 5 处的字符。生成的字符串为 s = "acbcb"。

示例2:

  • 输入: s = "aa"
  • 输出: 2
  • 解释:我们无法执行任何操作,因此我们返回原始字符串的长度。

约束:

    1 5 s 仅由小写英文字母组成。

提示:

    只有每个字符出现的频率对于找到最终答案很重要。
  1. 如果某个字符出现次数少于 3 次,我们无法对其执行任何处理。
  2. 假设有一个字符在字符串中出现至少3次,我们可以重复删除其中两个字符,直到最多出现2次。

解决方案:

我们需要关注字符串中每个字符的出现频率。解决方法如下:

方法:

  1. 计算字符频率:

      使用频率表来统计每个字符在字符串中出现的次数。
  2. 减少频率>= 3的字符:

      如果一个字符出现3次或以上,我们可以重复删除其中两个,直到只剩下2次。
  3. 计算最小长度:

    • 减少频率后,将所有字符的剩余数量相加。

让我们用 PHP 实现这个解决方案:3223。运算后字符串的最小长度

<?php
/**
 * @param String $s
 * @return Integer
 */
function minimumLength($s) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Example 1
$s1 = "abaacbcbb";
echo "Input: $s1\n";
echo "Output: " . minimumLength($s1) . "\n";

// Example 2
$s2 = "aa";
echo "Input: $s2\n";
echo "Output: " . minimumLength($s2) . "\n";
?>
登录后复制

解释:

  1. 频率计数:

    • 迭代字符串,并为每个字符增加 $Frequency 数组中的计数。
  2. 减少字符:

    • 对于 $Frequency 数组中的每个字符,检查其计数是否为 3 或更多。如果是这样,请将其减少到最多 2。
  3. 计算结果:

    • 对 $Frequency 数组中的值求和以获得字符串的最小可能长度。

演练示例:

示例1:

  • 输入:s = "abaacbcbb"
  • 频率:['a' => 3、'b'=> 4、'c' => 2]
  • 减少后:
    • '一' => 2(从 3 减少),
    • 'b'=> 2(从 4 减少),
    • 'c'=> 2(无需减少)。
  • 最小长度:2 2 2 = 6。

示例2:

  • 输入:s = "aa"
  • 频率:['a' => 2]
  • 不需要减少,因为没有字符的频率为 3 或更多。
  • 最小长度:2。

复杂:

  1. 时间复杂度:

    • 计数频率:O(n),其中 n 是字符串的长度。
    • 减少:O(1)(恒定时间,因为只有 26 个小写字母)。
    • 求和频率:O(1).
    • 总体:O(n)
  2. 空间复杂度:

    • O(1),因为频率数组最多有 26 个条目。

这个解决方案非常高效,并且在问题的限制范围内运行良好。

联系链接

如果您发现本系列有帮助,请考虑在 GitHub 上给 存储库 一个星号或在您最喜欢的社交网络上分享该帖子?。您的支持对我来说意义重大!

如果您想要更多类似的有用内容,请随时关注我:

  • 领英
  • GitHub

以上是运算后字符串的最小长度的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板