Pallindrome Ultimate Q

#include <bits/stdc++.h>
using namespace std;
// how many possible contiguious pallindromic substring are possible:

bool check(int iint jstring &str){
    if(i >= jreturn true;
    if(str[i] != str[j]return false;

    return check(i+1j-1str);

}

set<string> x;
int help(string &s){
    x.clear();
    int n = s.size();
    for(int i=0;i<n;i++){
        for(int j=i;j<n;j++){
            if(check(i, j, s)) x.insert(s.substr(i, j-i+1));
        }
    }
    // for(auto i: x) cout << i << " ";

    return x.size();

}





int disPallindromes(string &s){
    int n = s.size();
    unordered_set<string> st;

    // add every single char:
    for(auto ch: s) st.insert("" + ch); //----> wrong op

    for(int i=0;i<n;i++){
        // even length:
        // assume mid and then expand:
        int l = i;
        int r = i+1;
        while(l >= 0 && r < n){
            if(s[l] == s[r]){
                st.insert(s.substr(l, r - l + 1));
                l--;r++;
            }
            else break
        }

        // odd length:
        l = i-1;
        r = i+1;
        while(l >= 0 && r < n){
            if(s[l] == s[r]){
                st.insert(s.substr(l, r - l + 1));
                l--;r++;
            }
            else break;
        }


    }
    for(auto i: st) cout << i << " ";

    return st.size();

}




int main(){
    string s = "abaaa";
    // cout << endl;
    // cout << help(s) << endl;
    // for(auto i: x) cout << i << " ";
    cout << disPallindromes(s) << endl;
    return 0;
}


Comments

Popular Posts