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

运算后字符串的最小长度

Jan 13, 2025 pm 10:30 PM

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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
高流量网站的PHP性能调整高流量网站的PHP性能调整May 14, 2025 am 12:13 AM

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

PHP中的依赖注入:初学者的代码示例PHP中的依赖注入:初学者的代码示例May 14, 2025 am 12:08 AM

你应该关心DependencyInjection(DI),因为它能让你的代码更清晰、更易维护。1)DI通过解耦类,使其更模块化,2)提高了测试的便捷性和代码的灵活性,3)使用DI容器可以管理复杂的依赖关系,但要注意性能影响和循环依赖问题,4)最佳实践是依赖于抽象接口,实现松散耦合。

PHP性能:是否可以优化应用程序?PHP性能:是否可以优化应用程序?May 14, 2025 am 12:04 AM

是的,优化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)优化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,并避免使用

PHP性能优化:最终指南PHP性能优化:最终指南May 14, 2025 am 12:02 AM

theKeyStrategiestosiminificallyBoostphpapplicationPermenCeare:1)useOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)优化AtabaseInteractionswithPreparedStateTemtStatementStatementSandProperIndexing,3)配置

PHP依赖注入容器:快速启动PHP依赖注入容器:快速启动May 13, 2025 am 12:11 AM

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增强codemodocultion,可验证性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

PHP中的依赖注入与服务定位器PHP中的依赖注入与服务定位器May 13, 2025 am 12:10 AM

选择DependencyInjection(DI)用于大型应用,ServiceLocator适合小型项目或原型。1)DI通过构造函数注入依赖,提高代码的测试性和模块化。2)ServiceLocator通过中心注册获取服务,方便但可能导致代码耦合度增加。

PHP性能优化策略。PHP性能优化策略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

PHP电子邮件验证:确保正确发送电子邮件PHP电子邮件验证:确保正确发送电子邮件May 13, 2025 am 12:06 AM

phpemailvalidation invoLvesthreesteps:1)格式化进行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!