专栏文章
题解:CF1582C Grandma Capa Knits a Scarf
CF1582C题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqdv9nv
- 此快照首次捕获于
- 2025/12/04 03:11 3 个月前
- 此快照最后确认于
- 2025/12/04 03:11 3 个月前
题意
组数据。
给你一个包含 个字符的字符串 ,你可以删除其中的一些字符,来使这个字符串回文。输出最少删除的字符个数。
分析
众所周知,字符串只有 个字符,我们完全可以暴力,然后双指针优化。如果说两个一样就跳过,因为这两个字符是回文的,否则我们就删除左指针指向的字符或者右指针指向的字符。当然,如果这两个指针指向的字符都不能被删去,那么这种方法就不行。
代码
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
const int INF=1e17+7;
int t,n;
string s;
signed main()
{
cin>>t;
while(t--){
cin>>n>>s;
s=" "+s;
int ans=INF;
for(int i='a';i<='z';i++){
int l=1,r=n,flag=0,count=0;
while(l<r){
if(s[l]!=s[r]){
if(s[l]==i){
l++;
count++;
}else if(s[r]==i){
r--;
count++;
}else{
flag=1;
break;
}
}else{
l++;
r--;
}
}
if(!flag)
ans=min(ans,count);
}
if(ans==INF)
cout<<"-1"<<endl;
else
cout<<ans<<endl;
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...