字符串運用—密碼截取

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int getCipherMaxLen(string s);

int main(){
    string ciper;
    while(cin>>ciper){
        int maxLen = getCipherMaxLen(ciper);
        cout<<maxLen<<endl;
        //cout<<"-------------------------------"<<endl;
    }

    return 0;
}

int getCipherMaxLen(string s){
    int maxlen = 0;
    int len = s.length();
    if(len == 1) return 1;
    if(len == 2 && s[0] == s[1]) return 2;
    //迴文
    for(int i = 1; i < len - 1; i++){
            int n = 1;
            int j = i-1, k = i+1;
            while(j>= 0 && k <=len-1){
                if(s[j] == s[k]){
                    n = n + 2;
                    //cout<<"j = "<<j<<" s[j] = "<<s[j]<<". k = "<<k<<" s[k] = "<<s[k]<<endl;
                    j--;
                    k++;
                }
                else break;
            }
            maxlen = max(n, maxlen);
    }
    //cout<<endl;
    if(len > 3){
        for(int i = 1; i < len - 1; i++){
            int n = 0;
            int j = i + 1;
            int k = i;
            while(k >= 0 && j <= len-1){
                if(s[k] == s[j]){
                    n = n + 2;
                    //cout<<"k = "<<k<<" s[k] = "<<s[k]<<". j = "<<j<<" s[j] = "<<s[j]<< endl;
                    k--;
                    j++;
                }
                else break;
            }
            maxlen = max(n, maxlen);
        }
    }

    return maxlen;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章