算法笔试模拟题精解之“字符配对”

简介: 本题可以使用动态规划来解决,对于第i个字符,有选和不选两种,如果选,则和第i-1个字符组合创造权值,如果不选,就单独出来没有权值,取两者中加权最大的选择。

在线编程介绍

阿里云开发者社区在线编程产品,针对广大开发者学习、实践、面试、应聘、考试认证等打造的免费在线刷题神器。题库来自笔试模拟题、算法大赛模拟题等,界面整洁明了,操作简单,为用户营造专心答题的学习环境。点击链接开始体验:https://developer.aliyun.com/coding

本文为大家介绍其中的第73题:字符配对 的题目解析,具体如下:

题目描述

题目等级:中等
知识点:DP

查看题目:字符配对 给你一个字符串,字符串中仅包含"A","B",现在有四种字符串"AA","AB","BA","BB",每种字符串都有他们的权值,问从给出的字符串中能够得到的最大权值为多少(一个字符只能属于一个子字符串)?

输入一个字符串s(1 <= |s| <=10^6);
再输入一个数组,数组中包含四个数字a,b,c,d,依次表示字符串"AA","AB","BA","BB"的权值(1 <= a,b,c,d <= 100)。

输出权值的最大值。

示例1
输入:
"ABA"
[1 ,2, 3, 4]
输出:
3

解题方法:DP

大致思路:动态规划问题,对于第i个字符,有选和不选两种,如果选,则和第i-1个字符组合创造权值,如果不选,就单独出来没有权值,取两者中加权最大的选择。
具体过程:定义一个字典map,key分别为"AA","AB","BA","BB",value为对应的权值。定义大小为n的数组dp,dp[i]表示前i个字符组成的最大权值,毫无疑问,dp[0]=0,dp[1]=map.get(s.substring(0, 2));

从i=2开始遍历字符串,对于dp[i],有两个选择,一种是让第i个字符独立,即此时的权值dp[i]=dp[i-1],因为第i个字符没有创造价值。

另一种选择是让第i个字符有价值,即第i-1个字符和第i个字符组合创造价值,此时dp[i]=dp[i-2]+map.get(s.substring(i-1,i+1)).针对这两个选择,取权值最大的即可。

因此,dp[n-1]为最终答案。

时间复杂度为O(n)
空间复杂度为O(n)

看完之后是不是有了想法了呢,题目直达链接:查看题目:字符配对

720-150.png

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