Lib/回文判定
文字列(配列)
code:cpp
bool is_kaibun(string s){
rep(i,s.size()/2) if(si != ss.size()-1-i) return false;
return true;
}
ビット単位 (判定対象,長さ)
code:cpp
bool is_kaibun(int n,int k){
rep(i,k/2) if((bool)(n & (1LL << i)) != (bool)(n & (1LL << (k-1-i)))) return false;
return true;
}
いつ使うんだこれ……
ロリハ
code:cpp
bool is_pld(RollingHash &rh,RollingHash &rrh,ll l,ll r,ll n,string s="",string t=""){
ll len = r-l;
//print("len =",len,s,t);
if(len%2 == 0){
//[l,l+len/2),[l+len/2,r)
//[l,l+len/2),[n-(l+len/2),n-l)
//print("A",s.substr(l,l+len/2),t.substr(n-r,n-(l+len/2)));
print(l,l+len/2,n-r,n-(l+len/2));
return rh.get(l,l+len/2) == rrh.get(n-r,n-(l+len/2));
}else{
//print("B",s.substr(l,l+len/2),t.substr(n-r,len/2));
//print(l,l+len/2,n-r-1,n-(l+len/2)-1);
return rh.get(l,l+len/2) == rrh.get(n-r,n-(l+len/2)-1);
}
}
未チェック
#Lib