题目要求最少操作数使得序列不是长度大于 1 的对称序列。首先利用双指针判断该序列是不是对称序列,不是则直接答案为0。接下来考虑删除操作,对于只有一种元素的对称序列,怎么删都是对称序列,只能删到最后一个,答案为len−1,拥有多种元素的那么肯定存在相邻元素不同的元素,删除一个即可满足条件答案为1 整体复杂度o(n)
#include <bits/stdc++.h>
using namespace std;
#define N 100005
小蓝有一个长度为 n 的字符串 S。一个序列被称为对称序列,当且仅当它正向读取与反向读取的结果完全一致,例如 "aba" 和 "aa" 都是对称序列,而 "ab" 不是。
小蓝不喜欢长度大于 1 的对称序列,因此他决定从字符串中删除一些字符(可以删除 0 个),剩余字符保持原来的相对顺序形成新的字符串。他想知道,最少需要删除多少个字符,才能使得新字符串不是长度大于 1 的对称序列?请你告诉他答案。
输入包含多个测试用例。
约束:
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.