题解 | #寻寻觅觅寻不到#

寻寻觅觅寻不到

https://ac.nowcoder.com/acm/contest/11178/B

【B.寻寻觅觅寻不到】暴力,对于两个字符串a、b,如果a[pos]!=b[pos],那么截取的k一定在pos处或者左边,枚举k就行了。特判有点麻烦。

#include <bits/stdc++.h>
#define sz(x) (int)(x).size()
using namespace std;

const int N = 3e5 + 10;
string s, t;
int n1, n2, k;

int main() {
    int T;
    cin >> T;
    while (T--) {
        cin >> s >> t >> k;
        n1 = sz(s), n2 = sz(t);
        if (n1 != n2) {
            cout << "NO\n";
            continue;
        }
        if (k > n1) {
            cout << "NO\n";
            continue;
        }
        if (s == t) {
            cout << "YES\n";
            continue;
        }
        int pos = 0;
        for (; pos < n1; pos++) {
            if (s[pos] != t[pos]) break;
        }

        // 遍历所有的情况
        bool res = false;
        for (int i = 0; i <= k; i++) {
            int post = pos - i;
            if (post < 0) break;
            if (post + k > n1) {
                continue;
            }

            string tmp1 = s.substr(post, k);
            string tmp = s.substr(0, post) + s.substr(post + k) + tmp1;
            if (tmp == t) res = true;
        }

        if (res)
            cout << "YES\n";
        else
            cout << "NO\n";
    }

    return 0;
}
全部评论

相关推荐

明天不下雨了:我靠2022了都去字节了还什么读研我教你****:你好,本人985电子科大在读研一,本科西南大学(211)我在字节跳动实习过。对您的岗位很感兴趣,希望获得一次投递机会。
点赞 评论 收藏
分享
01-17 12:35
吉首大学 Java
秋招之BrianGriffin:自己的工作自己做!😡
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务