首页 > 其他分享 >1653. 使字符串平衡的最少删除次数

1653. 使字符串平衡的最少删除次数

时间:2023-04-08 18:59:24浏览次数:55  
标签:删除 复杂度 countB 最少 字符串 1653 dp

题目链接:1653. 使字符串平衡的最少删除次数

方法:动态规划

解题思路

  • 对于字符串\(s\),设使得字符串\(s[0, i]\)平衡的最小删除次数为\(dp[i]\)。
  • 若\(s[0, n - 2]\)为平衡字符串,当\(s[n-1]==b\)时,则\(dp[n-1] = dp[n-2]\);当\(s[n-1]==a\)时,则\(dp[n-1] = min(dp[n-2] + 1\), \(a\)前面所有\(b\)的数量)。
  • 从下到上利用递推实现(归),刚好可以计算当前'a'之前的'b'的数量。

代码

class Solution {
public:
    int minimumDeletions(string s) {
        int countB = 0, dp = 0;
        for (auto &c : s) {
            if (c == 'a') {
                dp = min(countB, dp + 1);
            } else {
                countB ++ ;
            }
        }
        return dp;
    }
};

复杂度分析

时间复杂度:\(O(n)\);
空间复杂度:\(O(1)\)。

标签:删除,复杂度,countB,最少,字符串,1653,dp
From: https://www.cnblogs.com/lxycoding/p/17299001.html

相关文章

  • 面试题 05.02. 二进制数转字符串
    题目链接:面试题05.02.二进制数转字符串方法:找规律解题思路(1)题目要求:将一个\(0-1\)之间的实数通过二进制进行表示,并通过字符串形式输出。(2)由于二进制的小数只能表示\(\frac{1}{2}\frac{1}{4}\frac{1}{8}...\frac{1}{2^n}\)数之间的和的十进制小数,因此有些十进制小数不能......
  • HJ52_计算字符串的编辑距离_动态规划_动态规划可视化
    思路:该题目符合最优解拥有最优子解,符合动态规划算法要求.2思路:操作方法有3种,替换、插入、删除。把a字符串编辑成b字符串的距离。3假设空字符串开始编辑作为bottom边界。4a字符串作为深度,b作为宽度。5沿宽度遍历为add,沿深度遍历为delete,斜角为change6判断是否相......
  • 1247. 交换字符使得字符串相同
    题目链接:[1247.交换字符使得字符串相同]方法:找规律解题思路由于只能两个字符串之间交换字符,单个字符串内不允许交换,因此如果只有一个字符对不相同,那么一定无法通过交换变为相同字符串,同理当不相同的字符对为奇数时,也无法通过交换变为相同字符。当不相同的字符对数为偶数时,现......
  • 1326. 灌溉花园的最少水龙头数目
    题目链接:1326.灌溉花园的最少水龙头数目方法:贪心解题思路每次到达端点l时,寻找在此处能够到达的最远右端点;思路一:先对每个水龙头能够覆盖的\([l,r]\)构成的数组\(rg\)按照\(l\)进行从小到大排序,然后遍历右端点\(r=[0,n]\),对于当前\(r\),在\(rg\)中找其能够到达的......
  • 『0012』 - Solidity Types - 字符串(String Literals)
    作者:黎跃春,案例字符串可以通过""或者''来表示字符串的值,Solidity中的string字符串不像C语言一样以\0结束,比如我的微信号liyc1215这个字符串的长度就为我们所看见的字母的个数,它的长度为8。pragmasolidity^0.4.4;contractStringLiterals{string_name;//状态变量......
  • Python 进阶指南(编程轻松进阶):十一、注释、文档字符串和类型提示
    原文:http://inventwithpython.com/beyond/chapter11.html源代码中的注释和文档可能和代码一样重要。原因是软件是永远不会完成的;无论是添加新功能还是修复错误,您总是需要做出改变。但是你不能改变代码,除非你理解它,所以保持它可读是很重要的。正如计算机科学家哈罗德·艾贝尔森......
  • HJ71_字符串通配符_多维递归
    思路:1、对比字符最后一个,对比字符倒数第二个,一致对比到最后一个,如此递归。2、该题符合多维递归,回溯判断。遇到“*”通配符时,列举三种不同参数传递的递归情况,分叉递归以达到穷举的效果。(回溯)3、结束条件:两字符串均为空,不计算“*”字符具体,如代码所示。#*只能匹配数字或字母0个......
  • 判断字符串是不是正则表达式
    :rules="[{required:true,trigger:'blur',validator:this.checkCanonical},]"checkCanonical(rule,value,callback){if(value){letisReg=truetry{isReg=eval(......
  • JavaScript 有效的字符串方法
    目录获得字符串的长度用处在字符串中查找子字符串找到字符串的位置判断是否包含特定子字符串截取子字符串的方法转换大小写替换字符串的某部分本文内容部分截取自该网站,不同部分则为本人笔记。获得字符串的长度letbrowserType='mozilla';browserType.length;用处检......
  • 冷知识:预处理字符串操作符
    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/Xr2pFCJ4j0DZYo2PO6-KQg当年学习C语言的第一门课就提到过标记(Token)的概念,不过,相信在多年之后你再次听到这个术语时会一脸懵逼,比如我。因此特地翻了翻资料,整理下来这些笔记......