Pallindrome Ultimate Q
#include <bits/stdc++.h>
using namespace std;
// how many possible contiguious pallindromic substring are possible:
bool check(int i, int j, string &str){
if(i >= j) return true;
if(str[i] != str[j]) return false;
return check(i+1, j-1, str);
}
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
Post a Comment