Harbour.Space Scholarship Contest 2021-2022 (open for everyone, rated, Div. 1 + Div. 2) 1553

B. Reverse String

思路

枚举 t t t 被截断的地方和 s s s 开始识别 t t t 的地方

AC(string, bf)

#include <bits/stdc++.h>
using namespace std;
int main() {
	int q;
	cin >> q;
	while (q -- ) {
		string s, t;
		cin >> s >> t;
		bool OK = 1;
		int lent = t.size();
		int lens = s.size();
		if (OK == 0) continue;
		for (int i = 0; i < lent; i ++ ) {
			string t1 = t.substr(0, i + 1);
			string t2 = t.substr(i + 1);
			reverse(t2.begin(), t2.end());
			for (int j = i; j < lens; j ++ ) {
				string s1 = s.substr(j - i, i + 1);
				string s2;
				if (j >= t2.size()) s2 = s.substr(j - t2.size(), t2.size());
				if (s1 == t1 && s2 == t2) {
					OK = 0;
					cout << "YES" << endl;
					break;
				}
			}
			if (OK == 0) break;
		}
		if (OK) cout << "NO" << endl;
	}
	return 0;
} 

D.Backspace

思路

  • 对于前面的字符我们可以不管,只要输入我们就 b a c k s p a c e backspace backspace ,所以现在我们只考虑 j j j 能不能到 0 0 0, j j j 0 0 0 就弹出
  • 对于为什么我们 i − = 2 i -= 2 i=2
    1.对于开始识别 t t t 开始,我们每个字符都被 b a c k s p a c e backspace backspace 代替,所以相当于每次删去两个字符,如果 t t t 被截断和 t t t 后面缀着东西,都是只能删去 2 2 2 个字符,也就是 i − = 2 i -= 2 i=2
    2.对于未识别 t t t 时,我们可以随意删除,也就是不管他,只要 j j j 能等于 0 0 0 我们就立刻输出 Y E S YES YES

AC(math)

#include <bits/stdc++.h>
using namespace std;
int main() {
	int q;
	cin >> q;
	while (q -- ) {
		string s, t;
		cin >> s >> t;
		int j = t.size();
		int i = s.size() - 1;
		if (lent > lens) {
			cout << "NO" << endl;
			continue;
		}
		while (i >= 0 && j) {
			if (t[j - 1] == s[i]) {
				j --;
				i --;
			}
			else i -= 2;
		}
		if (j) cout << "NO" << endl;
		else cout << "YES" << endl;
	}
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值