HNUSTOJ-1543 字符串的运算再现

HNUSTOJ-1543 字符串的运算再现

大家好,又见面了,我是全栈君。

 

1543: 字符串的运算再现

时间限制: 1 Sec  内存限制: 128 MB
提交: 34  解决: 7
[提交][状态][讨论版]

题目描述

我们对字符串 S 做了以下定义:

1. S ^ k表示由k个字符串S构成的新字符串。 例如, S = “abc”, k = 3, 则S ^ k  =  “abcabcabc”

2. Subsequence(S) 表示由字符串S的所有非空子序列构成的字符串集合。例如, S = “abc”, 则Subsequence(S) = {“a”, “b”, “c”, “ab”, “ac”, “bc”, “abc”}

现在, 给你2个字符串S和T, 希望你能找到最小的k, 满足T ∈Subsequence(S ^ k)

 

输入

输入只有2行, 分别为字符串S和T (1 <= |S|, |T| <= 100,000), 输入保证字符串S和T只由小写字母构成。

 

输出

输出最小的k, 满足T ∈Subsequence(S ^ k), 若不存在这样的k, 则输出-1

 

样例输入

abc
abacbc

样例输出

3
#pragma GCC diagnostic error "-std=c++11"
#include <bits/stdc++.h>
#define _ ios_base::sync_with_stdio(0);cin.tie(0);
#include <typeinfo>


using namespace std;
const int N =  100000 + 5;

char s[N], t[N];


void Init(int * a, int n){ for(int i = 0; i < n; i++) a[i] = 0;}
int Work(){
    int lens = strlen(s), lent = strlen(t);
    set<int> next[26];
    int vis[26]; Init(vis, 26);
    for(int i = 0 ; i < lens; i++)
        vis[s[i] - 'a'] = 1, next[s[i]-'a'].insert(i);

    for(int i = 0; i < lent; i++) if(!vis[t[i]-'a']) return -1;

    int cur = 0, k = 1;

    set<int>::iterator it;

    for(int i = 0; i < lent; i++){
        int p = t[i] - 'a';
        if((it = next[p].lower_bound(cur)) != next[p].end()) cur = (*it) + 1;
        else cur = 0, k++, i--;
    }
    return k;
}
int main(){ _
    while(cin >> s >> t){
        cout << Work() << endl;
    }
}

 

转载于:https://www.cnblogs.com/Pretty9/p/7424087.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108210.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pycharm社区版创建Flask项目详解「建议收藏」

    Pycharm社区版创建Flask项目详解「建议收藏」一、在原有工程上修改1、创建工程选择newproject创建工程输入项目名,选择配置好的虚拟环境项目创建好之后是一个空的项目,里面没有任何文件,下面我们来新建工程目录2、配置工程目录在工程根目录新建app.py文件在app.py中的代码如下:fromflaskimportFlask,render_templateapp=Flask(__name__)app.config[‘SECRET_KEY’]=’1456719640@qq.com’@app.rou

    2022年8月29日
    2
  • linux杀掉mysql进程_linux杀死pid进程

    linux杀掉mysql进程_linux杀死pid进程使用“ps-e|grepmysql”命令,查看mysql程序的对应的pid号。使用“kill-9进程号”命令,可以结束掉mysqld_safe进程。使用”killallmysqld”命令,可以杀掉所有已mysqld命名的进程。…

    2022年9月1日
    4
  • csdn如何转载博客_csdn怎么分享链接

    csdn如何转载博客_csdn怎么分享链接后续的文章将自动同步到csdn

    2022年7月28日
    6
  • calendar 月份加减_calendar获取时间

    calendar 月份加减_calendar获取时间calendar类,日期加减Java代码public class test1 {        public static void main(String[] args) {            Calendar c = Calendar.getInstance();            int year=c.get(Calendar.YEAR);                 …

    2022年9月23日
    3
  • js中map遍历数组对象_js遍历数组

    js中map遍历数组对象_js遍历数组forEach()和map()都是遍历数组的方法,用法类似,但是还是有很大区别:相同点:      1.都是循环遍历数组中的每一项;      2.在遍历中执行匿名函数都可以接收三个参数,分别为:遍历过程的每一项、遍历序号(索引值)、原数组;      3.执行的匿名函数中的this都指向window。  不同点:      map():      根据遍历执行的匿名函数,对于原数…

    2025年11月10日
    6
  • NLTK使用汇总_bom用量计算公式

    NLTK使用汇总_bom用量计算公式0.如何离线安装NLTK1.LookupError:Resourcenotfound.2.分句、分词和停用词3.词性标注和词形还原4.分句5.N-gram

    2025年7月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号