问题转化
我们需要从原字符串中删除尽可能少的字符,使得剩下的字符串能够被完全划分成若干个长度为 2 的、由相同字母组成的块(即“双字母对”)。换言之,剩余字符串中,每两个相邻的字符必须相等,并且总长度为偶数。
动态规划定义
令 dp[i] 表示考虑原字符串的前 i 个字符(下标 1…i)时,使得处理后的字符串成为好串所需的最少删除次数。
最终答案即为 dp[n],其中 n 是字符串长度。
考古学家发现了一段由小写字母组成的密码。密码本应由若干连续的“双字母对”构成,每个双字母对由两个相同的字母组成(例如 aa、bb)。然而,由于部分字母被腐蚀擦除,剩下的字母仍然保持原来的顺序,但不再满足上述结构。
你可以选择删除其中一些字符(其余字符的相对顺序不变),使得剩下的字符串能够被完全划分成若干个长度为 2 的、由相同字母组成的块。换言之,剩余字符串的长度 L 必须是偶数,且对于每一个满足 0≤2k<L 的整数 k,都有 s2k=s2k+1。请你求出最少需要删除多少个字符。
字符串的长度不超过 105,只包含小写字母。
输入包含一行,一个仅由小写字母构成的字符串 s,其长度不超过 105。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册