zoukankan      html  css  js  c++  java
  • Codeforces Round #750 (Div. 2) C. Grandma Capa Knits a Scarf


    双指针。结合回文串的性质,对于最外面的两个端点,由于每次只可能删除同一种字符,那么如果内部的串可构成回文串,那么外部字符无关紧要,符合无后效性。

    值得注意的一点是,双指针不一定两个指针都一起移动,需要每次都判断条件,并进行值的增减。

    #include<cstdio>
    #include<iostream>
    using namespace std;
    const int INF=2e9;
    string s;
    
    int getVal(char testChar){//需要减的数量,-1为不存在 
        int l=0,r=s.size()-1;
        int ans=0;
        while(r>l){
            if(s[l]==s[r]){//两端点字符相等
                l++;
                r--;
                continue;//不影响统计答案 
            }
            if(s[l]!=testChar&&s[r]!=testChar){//两端点字符都不是测试字符且不相同
                return -1;//不成立 
            }
            //两端点有一个是测试字符
            if(s[l]==testChar&&s[l]!=s[r]){
                l++;//转移端点
                ans++; 
                continue;
            }else if(s[r]==testChar&&s[l]!=s[r]){
                r--;//转移端点
                ans++; 
                continue;
            }
            
        }
        return ans;
    }
    
    int main(){
        int t;
        scanf("%d",&t);
        while(t--){
            int n;
            scanf("%d",&n);
            cin>>s;
            int ans=-1;
            for(char i='a';i<='z';i++){
                int tmpAns=getVal(i);
                if(ans==-1){
                    ans=tmpAns;
                }else{
                    if(tmpAns!=-1){
                        ans=min(ans,tmpAns);
                    }
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    CSS 实现图片灰度效果
    有关楼层滚动且对应楼层Nav导航高亮显示
    本地上传图片预览效果
    gulp.js 的安装以及使用
    ReactJS -- 初学入门
    ie8下jquery改变PNG的opacity出现黑边
    数据库操作 (4-3)
    Python之协程 (4-2)
    python 之 线程 3-29
    Python之 并发编程(3-19)
  • 原文地址:https://www.cnblogs.com/zbsy-wwx/p/15458573.html
Copyright © 2011-2022 走看看