can u give me an example of a string whose size is greater than 2 and consists of more than 1 distinct characters and L(V) == R(V).
abab
#include
#include
#include
#include <bits/stdc++.h>
#include <stdio.h>
#include
using namespace std;
string strunga(){
string strungs;
cin>> strungs;
if(strungs.length()==1) return "YES";
vector<int> strung;
strung.push_back(strungs[0]);
if(strungs[1] != strungs[0]) strung.push_back(strungs[1]);
for(long i = 0 ; i< strungs.length() ; i++){
/*if(find(strung.begin(), strung.end(), strungs[i]) !=strung.end()){*/
if(strung.size() ==2)
{
if(i%2==0)
{if(strungs.length()%3==0) return "NO";
else if(strung[0] == strungs[i]) continue;
else return "NO";
}
else{
if(strung[1] == strungs[i]) continue;
else return "NO";
}
}
else
{
if(strung[0] == strungs[i]) continue;
else return "NO";
}
}
return "YES";
}
int main(){
int j;
cin>> j;
while(j!=0){
cout<<strunga()<<endl;
j–;}
return 0;
}
can anyone tell me why it is not working
Can anyone please tell why this solution is giving WA!!! I am stuck since more than an hour!
@rishup_nitdgp I applied the same logic as given in the editorial’s last 2 points.
If length is odd, all characters should be same else alternate characters should be same.
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
ll t;
cin>>t;
while(t–)
{
string s;
cin>>s;
ll n=s.size(),ans=1,odd=0;
if(n%2==1)
odd=1;
for(ll i=2;i<n;i++)
{
if(odd && (s[i]!=s[i-1]) )
{
ans=0;
break;
}
else if( (!odd) && (s[i]!=s[i-2]) )
{
ans=0;
break;
}
}
if(ans)
cout<<“YES”<<endl;
else
cout<<“NO”<<endl;
}
return 0;
}
for odd u didn’t compare s[0] with anyone…
I can’t figure out the bug in this code yet this is tested wrong.
#include
#include
using namespace std;
int main() {
// your code goes here
int t;
cin>>t;
while(t–)
{string s;
cin>>s;
int n=s.size();
if(n<=2){cout<<“YES”<<endl;break;}
else if(n%2==1)
{bool flag=true;
for(int i=1;i<n;i++)
{if(s[i]!=s[i-1]){flag=false;break;}}
if(flag)cout<<“YES”<<endl;
else cout<<“NO”<<endl;}
else {bool flag=true;
for(int i=2;i<n;i++)
{if(s[i]!=s[i-2]){flag=false;break;}}
if(flag)cout<<“YES”<<endl;
else cout<<“NO”<<endl;}}
return 0;
}
@anshumanprasad bro you are putting break in the if(n<=2) condition which will break out of while loop of test case. So just remove the break statement and you are good to go 
Can some one please help me with my code, I had tried to create some test cases for this problem and ans that I got is same as calculated. But tested wrong!!!
I’m getting WA for this (during contest)–
https://www.codechef.com/viewsolution/32347280
Getting AC for the same code with sys.stdin.readline removed (after contest)—
https://www.codechef.com/viewsolution/32370012
Why so? Is it because of ill-formatted strings with newlines in test cases?
#include
using namespace std;
string leftshift(string st) {
string f=st;
for(int i=1;i<st.size();i++){
st[i-1]=st[i];
}
st[st.size()-1]=f[0];
return st;
}
string rightshift(string w) {
string g=w;
for(int i=0;i<w. size()-1;i++){
w[i+1]=w[i];
}
w[0]=g[g. size()-1];
return w;
}
int main() {
int a;
string s,os,l, r, ll,rr, lr,rl,k;
cin>>a;
for(int i=0;i<a; i++){
cin>>s;
os=s;
l=leftshift(s);
k=os;
r=rightshift(k);
ll=leftshift(l);
rl=rightshift(l);
s=os;
k=os;
lr=leftshift®;
rr=rightshift®;
if(os==lr&&os==rr)
cout<<“YES”<<endl;
else if(os==ll&&os==rl)
cout<<“YES”<<endl;
else
cout<<“NO”<<endl;
}
return 0;
}
Can any one please find out why it is giving wrong answer…
#include <bits/stdc++.h>
using namespace std;
#define fastIO ios_base::sync_with_stdio(0); cin.tie(0);
typedef long long int ll;
string L(string S)
{
vector<char>k;
string temp;
char y=S[0];
temp+=y;
for(int i=1;i<S.length();i++)
{
k.push_back(S[i]);
}
// S[0]=y;
// S=S+y;
// cout<<y;
for(int i=0;i<k.size();i++)
{
temp+=k[i];
}
// cout<<temp<<endl;
return temp;
}
string R(string S)
{
vector<char>k;
string temp;
char y=S[S.length()-1];
for(int i=0;i<S.length()-1;i++)
{
k.push_back(S[i]);
}
// S[0]=y;
// S=S+y;
temp+=y;
// cout<<y;
for(int i=0;i<k.size();i++)
{
temp+=k[i];
}
// cout<<temp<<endl;
return temp;
}
int main() {
fastIO;
ll T;
cin>>T;
while(T--)
{
string S,V,X;
cin>>S;
V=S;
// cout<<L(V)<<R(V)<<endl;
// cout<<L(V).length()<<R(V).length()<<endl;
if(S.length()==1||S.length()==2||(L(V)==R(V)))
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
// cout<<endl;
}
return 0;
}
Whats wrong with this code guys?
HI @narendrago in your L function you are returning temp that has local scope to the function only
so if you will return something which has a local scope so it will create some problem
In addition to the solution provided (in C++) in the editorial, the python based solution is as follows:
def check_string_exist(data_string):
string_len = len(data_string)
if string_len == 1 or string_len == 2 or all(data_string[0] == c for c in data_string):
return True
is_exist = False
if not string_len % 2:
if all(data_string[0] == c for c in data_string[: : 2]) and all(data_string[1] == c for c in data_string[1: : 2]):
is_exist = True
return is_exist
def main():
for test in range(int(input().strip())):
print(f'{"YES" if check_string_exist(input().strip()) else "NO"}')
if __name__ == "__main__":
main()
For test-cases, go here: Competitive-Programming/Code-Chef/Chef-and-String at master · strikersps/Competitive-Programming · GitHub
#include
#include<string.h>
using namespace std;
int main()
{
int t,i;
cin>>t;
for(i=0;i<t;i++)
{
string s,r,l,v;
int l1,j,x,flag=0;
cin>>s;
l1=s.length();
if(l1==1)
{
cout<<"YES\n";
}
else
{
for(j=0;j<l1;j++)
{
for(x=0;x<l1;x++)
{
if(s[j]!=s[x])
{
flag=1;
break;
}
}
}
if(flag==0)
{
cout<<"YES\n";
}
else
if(l1%2==0)
{
for(j=0;j<l1/2;j++)
{
if(s[j]!=s[j+2])
{
flag=0;
}
}
if(flag==1)
{
cout<<"YES\n";
}
else
{
cout<<"NO\n";
}
}
else
{
cout<<"NO\n";
}}
}
return 0;
}
pls help…idk what im missing here?
// Whats wrong in the code ! thanks
import java.util.;
import java.lang.;
class Rep
{
public static void main(String args[])
{
LinkedList<Character> Left = new LinkedList<>();
LinkedList<Character> Right = new LinkedList<>();
LinkedList<String> value = new LinkedList<>();
String s ;
int loopnumber ;
Scanner s1 = new Scanner (System.in);
// Entering the string
// s = s1.next();
String s2="";
loopnumber = s1.nextInt();
while(loopnumber > 0)
{
s = s1.next();
for(int i=0;i<s.length()-1;i++)
{
Left.add(s.charAt(i));
}
// for converting this string into the left size //
//char c = s.charAt(n-1);
Left.add(0,s.charAt(s.length()-1));
//System.out.println(Left);
for(int i=0;i<s.length()-1;i++)
{
Right.add(s.charAt(i+1));
}
int n = Right.size();
Right.add(n,s.charAt(0));
//System.out.println(Right);
if(Left.equals(Right))
{
s2 = "YES";
}
else
{
s2 = "NO";
}
value.add(s2);
Right.clear();
Left.clear();
loopnumber-- ;
}
System.out.print(value);
}
}
#include <stdio.h>
#include<string.h>
int main(void) {
// your code goes here
int t,n,i,j,c=0;
scanf("%d",&t);
char s[1000000],v1[1000000],v2[1000000];
for(i=0;i<t;i++)
{
scanf("%s",&s);
n=strlen(s);
v2[n-1]=s[0];
v1[0]=s[n-1];
for(j=1;j<n;j++)
{
v1[j]=s[j-1];
v2[j-1]=s[j];
}
for(j=0;j<n;j++)
{
if(v1[j]!=v2[j])
{c++;
break;}
}
if(c==0)
printf(“YES\n”);
else
printf(“NO\n”);
}
return 0;
}
This shows wrong answer but when i checked with custom inputs, I got right answers. can some one explain why?
@humpty_dumpty2 You forgot to update the value c. It should be set to zero in each test case.
P.S: Always, try to attach the link to the solution instead of posting that itself.
for i in range (int(input())):
list = input()
setOfList=set(list)
if len(setOfList)==1 or len(list)==2:
print(‘YES’)
elif len(list)%2==0 and all(list[0] == c for c in list[: : 2]) and all(list[1] == c for c in list[1: : 2]):
print('YES')
else:
print('NO')
Thank you for pointing it out!

