星星博客 »  > 

Bailian3252 最大正向匹配【字符串匹配】

3252:最大正向匹配
总时间限制: 1000ms 内存限制: 65536kB
描述
给定2个短字符串str1,str2,在一个长字符串中找出以str1开头并且以str2结尾的最长字符串。
输入
第1行为str1, 表是开头字符串
第2行为str2, 表示结尾字符串
第3行为一个整数,表示接下来将要输入的数据行数n
第4行以下为输入字符串
所有字符串小于1024长
输出
n行, 输出找到的字长字串,包括首尾
样例输入
ab
ba
3
aab11234ab56ba789baba
abababa
adsjjafshabbajafkalf
样例输出
ab11234ab56ba789baba
abababa
abba
提示
可以利用指针和字符串处理函数(算法)解题
来源
cs10107 C++ Final Exam

问题链接:Bailian3252 最大正向匹配
问题简述:(略)
问题分析:字符串匹配问题,用C++的类string来解决。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* Bailian3252 最大正向匹配 */

#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s1, s2, s;
    int n;

    cin >> s1 >> s2 >> n;
    while (n--) {
        cin >> s;

        auto p = s.find(s1);
        if (p == string::npos) break;
        auto q = s.find(s2);
        if (q == string::npos) break;
        int t = q;
        while (q != string::npos) t = q, q = s.find(s2, q + 1);

        for (int i = p; i < t + (int)s2.size(); i++)
            cout << s[i];
        cout << endl;
    }

    return 0;
}

相关文章