首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >天池 在线编程 条件串(DP)

天池 在线编程 条件串(DP)

作者头像
Michael阿明
发布2021-02-19 15:12:59
发布2021-02-19 15:12:59
26200
代码可运行
举报
运行总次数:0
代码可运行

1. 题目

2. 解题

  • 把字符串分成ace,bdf 两部分进行处理,求以某个字符结束时的最小删除次数
代码语言:javascript
代码运行次数:0
运行
复制
class Solution {
public:
    /**
     * @param s: write your code here
     * @return: The longest length that satisfies the condition
     */
    int conditionString(string &s) {
        // write your code here
        string s1, s2;
        for(char c : s)
        {
            if(c == 'a' || c == 'c' || c == 'e')
                s1 += c;
            else
                s2 += char(c-1);
        }
        return s.size()-f(s1)-f(s2);
    }
    int f(string &s)
    {
        int n = s.size();
        if(n == 0)
            return 0;
        vector<vector<int>> dp(n,vector<int>(3, INT_MAX));
        // 求以某个字符结尾时,满足要求的,删除的最小次数
        dp[0][0] = s[0]=='a' ? 0 : 1;
        dp[0][1] = s[0]=='c' ? 0 : 1;
        dp[0][2] = s[0]=='e' ? 0 : 1;
        for(int i = 1; i < n; ++i)
        {
            if(s[i] == 'a')
            {
                dp[i][0] = dp[i-1][0];
                dp[i][1] = 1+min(dp[i-1][0], dp[i-1][1]);
                dp[i][2] = 1+min(dp[i-1][0], min(dp[i-1][1], dp[i-1][2]));
            }
            else if(s[i] == 'c')
            {
                dp[i][0] = 1+dp[i-1][0];
                dp[i][1] = min(dp[i-1][0], dp[i-1][1]);
                dp[i][2] = 1+min(dp[i-1][0], min(dp[i-1][1], dp[i-1][2]));
            }
            else
            {
                dp[i][0] = 1+dp[i-1][0];
                dp[i][1] = 1+min(dp[i-1][0], dp[i-1][1]);
                dp[i][2] = min(dp[i-1][0], min(dp[i-1][1], dp[i-1][2]));
            }
        }
        return min(dp[n-1][0],min(dp[n-1][1], dp[n-1][2]));
    }
};

50ms C++

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档