首页 > 后端开发 > php教程 > 删除字符以制作精美的字符串

删除字符以制作精美的字符串

DDD
发布: 2024-11-02 18:37:31
原创
231 人浏览过

Delete Characters to Make Fancy String

1957 年。删除字符来制作花哨的字符串

难度:简单

主题:字符串

花哨字符串是一个三个连续字符不相等的字符串。

给定一个字符串 s,从 s 中删除最小个可能的字符数,使其变得花哨

返回删除后的最终字符串。可以证明答案总是唯一.

示例1:

  • 输入: s = "leeetcode"
  • 输出:“leetcode”
  • 说明: 从第一组“e”中删除一个“e”以创建“leetcode”。 三个连续字符都不相等,因此返回“leetcode”。

示例2:

  • 输入: s = "aaabaaaa"
  • 输出:“aabaa”
  • 说明: 从第一组“a”中删除一个“a”以创建“aabaaaa”。 从第二组“a”中删除两个“a”以创建“aabaa”。 三个连续字符都不相等,因此返回“aabaa”。

示例 3:

  • 输入: s = "aab"
  • 输出:“aab”
  • 解释: 三个连续字符都不相等,因此返回“aab”。

约束:

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

提示:

  1. 如果三个或更多连续字符相等,删除字符的最佳方法是什么?
  2. 如果三个或更多连续字符相等,则保留其中两个并删除其余的。

解决方案:

我们需要确保最终字符串中没有三个连续字符相同。我们将迭代输入字符串并通过跟踪前两个字符来构建一个新的“奇特”字符串。如果第三个连续字符与最后两个字符匹配,我们将跳过它。否则,我们将其添加到输出中。

让我们用 PHP 实现这个解决方案:1957。删除字符制作花式字符串

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

// Example usage:
echo makeFancyString("leeetcode"); // Output: "leetcode"
echo "\n";
echo makeFancyString("aaabaaaa");  // Output: "aabaa"
echo "\n";
echo makeFancyString("aab");       // Output: "aab"
?>
登录后复制

解释:

  1. 初始化变量:

    • $result:这将存储最终的“奇特”字符串。
  2. 迭代字符串:

    • 对于每个字符,检查它是否与结果中的最后两个字符形成一个三重奏。
    • 如果是,请跳过将其添加到 $result。
    • 如果没有,请将其添加到 $result。
  3. 返回结果:

    • $result 字符串现在不包含三个连续的相同字符。

复杂性分析

  • 时间复杂度O(n),其中n是输入字符串的长度,因为我们每个字符处理一次。
  • 空间复杂度O(n),用于存储输出字符串。

该方案高效满足约束条件,并确保最终字符串不存在三个连续相同的字符。

联系链接

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

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

  • 领英
  • GitHub

以上是删除字符以制作精美的字符串的详细内容。更多信息请关注PHP中文网其他相关文章!

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