Chef and String | codechef solution

 

Problem

Chef has a string � consisting of lowercase English characters. Chef defined functions left shift �(�) and right shift �(�) as follows.

  • �(�) is defined as shifting all characters of string � one step towards left and moving the first character to the end.
  • �(�) is defined as shifting all characters of string � one step towards the right and moving the last character to the beginning.

For example, L("abcd") = "bcda" and R("abcd") = "dabc"

Chef wants to find out whether there exists a string � of the same length as � such that both �(�)=� and �(�)=� holds.

###Input:

  • The first line of the input contains a single integer � denoting the number of test cases. The description of � test cases follows.
  • The first line of each test case contains a string �.

###Output: For each test case, If there exists a valid string �, print "YES", otherwise print "NO" (without the quotes).

###Constraints

  • 1≤�≤100
  • 1≤∣�∣≤106
  • � contains all lower case English alphabets.
  • It's guaranteed that the total length of the strings in one test file doesn't exceed 106

Sample 1:

Input
Output
4
a
ab
abcd
aaaaa
YES
YES
NO
YES

Explanation:

  • In the first test case, Chef can choose �=�
  • In the second test case, Chef can choose � = "ba" which satisfies both conditions.
  • There doesn't exist any valid choice for string � in the third test case.
Code(C++):-
#include <iostream>
using namespace std;

string lShift(string s) {
return s.substr(1, s.length() - 1) + s.substr(0,1);
}

string rShift(string s) {
return s.back() + s.substr(0, s.length() - 1);
}

int main() {
int t;
cin >> t;
while (t--) {
string s;
cin >> s;
cout << ((lShift(s) == rShift(s)) ? "YES" : "NO") << endl;
}
}

Recommended Post :-

HCL Coding Questions:-

Capgemini Coding Questions:-

Companies interview:-

Full C course:-    

Key points:-

Cracking the coding interview:-

 Array and string:-

Tree and graph:-

Hackerearth Problems:-

Hackerrank Problems:-

Data structure:-

 MCQs:-