#include <bits/stdc++.h>
using namespace std;
#define int long long
#define all(a) (a).begin(),(a).end()
#define rep(i, n) for(int i = 0; i < (n); i++)
const int mod = 1000000007;
int h1 = 31;
int h2 = 43;
signed main(){
int t;
cin >> t;
while(t--){
string s;
cin >> s;
int n = s.size();
string l,r;
int s1 = 0;
int s2 = 0;
int ss1 = 0;
int ss2 = 0;
int m1[n + 1];
int m2[n + 1];
m1[0] = 1;
m2[0] = 1;
int x = 0;
for (int i = 1; i <= n; i++) {
m1[i] =( m1[i-1]*31+mod)%mod;
m2[i] = ( m2[i-1]*43+mod)%mod;
}
int ans = 0;
for (int i = 0; i < n/2; i++) {
s1 = (s1*31 + (s[i]-'a'))%mod;
s2 = (m1[x]*(s[n-1-i]-'a') + s2)%mod;
ss1 = (ss1*43 + (s[i]-'a'))%mod;
ss2 = (m2[x]*(s[n-1-i]-'a') + ss2)%mod;
// cout <<s[i]-'a'<<" "<< s1 << ' ' << s2 << endl;
x++;
if(s1 == s2 and ss1 == ss2){
ans+=2;
x=0;
s1 = 0;
s2 = 0;
ss1 = 0;
ss2 = 0;
}
}
if((s1!=0 and s2!=0)||n%2 ){
ans++;
}
cout << ans << endl;
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |