笔试算法模拟题精解之“变化的字符”

简介: 把所有数据处理一遍再求一遍最大值即可。

【在线编程产品介绍】

阿里云开发者社区在线编程:

免费刷题大神器,助你拿到好offer

周赛月赛不停歇,做题还能领奖品

大赛笔试全真题,常做常新有惊喜

点击链接开始产品体验:https://developer.aliyun.com/coding

本文为大家介绍的是“109.变化的字符”的解法探究。先来看一下题目内容:

题目详情

等级:困难
知识点:DP
查看题目:变化的字符

Tom又碰到了一道字符串的题目。

有一个字符串s(1<=|s|<=3e5,|s|为奇数),这个字符串只包含0,1和字符'.',这个'.'字符可以任意变为0或者1。

现在可以通过一些操作来缩短这个字符串,每次操作可以任意选择连续的三个字符,然后将这个连续的三个字符变成出现数量最多的那个字符(比如001变为0,101变为1,1.0可以变为0也可以变为1)。

通过更改字符'.',问通过(|s|-1)/2次操作后最终这个字符串只剩下一个1的方案有多少种,答案对1e9+7取模。

输入一行字符串s

输出一个数表示方案数。
示例1
输入:
"1.0.1"
输出:
4

解题方法:

操作次数为image.png,1.0.1长度为5就是可以操作2次。

分别可以把字符串变为10001 10011 11001 11011,这四种都可以使得最后只剩下1,所以答案为4种。

因为最后是剩下1所以我们肯定优先消去0,dp i,j,k的含义就是前i个字符中把第j个字符变成k 的方案数。

把所有数据处理一遍再求一遍最大值即可。

image.png
时间复杂度:O(24n)
空间复杂度:12n

看完之后是不是有了答题思路了呢,快来练练手吧:109.变化的字符

在线编程周赛、月赛火热进行中,更有限时答题活动,定制卫衣、双肩背包、机械键盘等多重好礼等你来拿~每天都有好礼相送~点击了解周赛详情:在线编程3月份比赛正式开启!机械键盘等你拿!

b462f1d86b44481ca24c0ad63fe55948.png

相关文章
|
3月前
|
算法
电子好书发您分享《超全算法笔试 模拟题精解合集》
电子好书发您分享《超全算法笔试 模拟题精解合集》
25 3
|
3月前
|
算法
电子好书发您分享《超全算法笔试 模拟题精解合集》
电子好书发您分享《超全算法笔试 模拟题精解合集》
26 2
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-439 算法训练 简单字符变换
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-439 算法训练 简单字符变换
37 1
|
3月前
|
算法
LeetCode算法题---无重复字符的最长子串、寻找两个正序数组的中位数(三)
LeetCode算法题---无重复字符的最长子串、寻找两个正序数组的中位数(三)
39 0
|
4月前
|
算法 测试技术 编译器
【算法 | 实验18】在字符矩阵中查找给定字符串的所有匹配项
题目描述 题目 在字符矩阵中查找给定字符串的所有匹配项 给定一个M×N字符矩阵,以及一个字符串S,找到在矩阵中所有可能的连续字符组成的S的次数。所谓的连续字符,是指一个字符可以和位于其上下左右,左上左下,右上右下8个方向的字符组成字符串。用回溯法求解。
35 1
|
2月前
|
编解码 算法 前端开发
往年 | 大疆雷达算法校招笔试题目解析
往年 | 大疆雷达算法校招笔试题目解析
28 1
|
3月前
|
存储 算法 JavaScript
Leetcode算法系列| 3. 无重复字符的最长子串
Leetcode算法系列| 3. 无重复字符的最长子串
|
4月前
|
算法 Java C语言
【新手解答6】深入探索 C 语言:算法流程图(条件判断、循环)+ 字符常量 + switch的具体用法 + 关于`namespace` + import vs include
【新手解答6】深入探索 C 语言:算法流程图(条件判断、循环)+ 字符常量 + switch的具体用法 + 关于`namespace` + import vs include
93 0
|
4月前
|
算法 索引
算法编程(二十一):查找共用字符
算法编程(二十一):查找共用字符
28 0
|
5月前
|
算法
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
29 0

热门文章

最新文章