1553B - Reverse String - CodeForces Solution


brute force dp hashing implementation strings *1300

Please click on ads to support us..

Python Code:

t = int(input())
for i in range(t):
    s = input()
    s2 = input()
    for j in range(len(s)):
        if s2 in (s[:j] + s[j::-1]):
            print("YES")
            break
    else:
        print("NO")

C++ Code:

#include <bits/stdc++.h>

using namespace std;


/*
 	dacaba
	cabac

	p = 2



*/

int main() {

	int tt;
	cin >> tt;

	while (tt--) {

		string s, t;
		cin >> s >> t;

		vector<int> pos;
		const int n = s.size();
		const int m = t.size();

		for (int i = 0; i != n; ++i)
			if (s[i] == t[0])
				pos.push_back(i);


		bool found = false;

		for (auto& p : pos) {
			// Moving to the right
			for (int i = 1; i <= m && p + (i-1) < n; ++i) {
				string right = s.substr(p, i);
				int rem = m - right.size();
				
				if (p+i-rem-1 >= 0) {
				string left = s.substr(p+i-rem-1, rem);
				reverse(left.begin(), left.end());
				if (right + left == t) {
					found = true;
					cout << "YES\n";
					goto end;
				}
				}
			}
		}

end:
		if (!found) {
		cout << "NO\n";
		}
	}

	return 0;
}


Comments

Submit
0 Comments
More Questions

189A - Cut Ribbon
1182A - Filling Shapes
82A - Double Cola
45A - Codecraft III
1242A - Tile Painting
1663E - Are You Safe
1663D - Is it rated - 3
1311A - Add Odd or Subtract Even
977F - Consecutive Subsequence
939A - Love Triangle
755A - PolandBall and Hypothesis
760B - Frodo and pillows
1006A - Adjacent Replacements
1195C - Basketball Exercise
1206A - Choose Two Numbers
1438B - Valerii Against Everyone
822A - I'm bored with life
9A - Die Roll
1430B - Barrels
279B - Books
1374B - Multiply by 2 divide by 6
1093B - Letters Rearranging
1213C - Book Reading
1468C - Berpizza
1546B - AquaMoon and Stolen String
1353C - Board Moves
902A - Visiting a Friend
299B - Ksusha the Squirrel
1647D - Madoka and the Best School in Russia
1208A - XORinacci