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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • poj 3259(bellman最短路径)[通俗易懂]

    poj 3259(bellman最短路径)

    2022年1月16日
  • matlab归一化方法,数据归一化的基本方法

    matlab归一化方法,数据归一化的基本方法1.线性归一化简单公式表达:y=(x-minValue)/(maxValue-minValue)其中,x是归一化之前的数据,y是归一化之后的数据,maxValue和minValue分别对应这一组数据中的最大值和最小值。范围:[0,1]。适用于:把原来数据等比例缩放限定在某一范围内,在不涉及距离度量和协方差计算的时候使用。2.标准差归一化简单公式表达:y=(x-μ)/σ其中,…

    2022年6月23日
  • idea最新激活码2021_通用破解码

    idea最新激活码2021_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
  • sdio接口定义_sdio接口

    sdio接口定义_sdio接口转:https://www.cnblogs.com/hellokitty2/p/10981084.htmlSDIO接口一、SDIO简介SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。SDIO1.0标准定义了两种类型的SDIO卡:1.全速的SDIO卡,传输率可以超过100Mbps;2.低速的SDIO卡,支援的时脉速率…

    2022年10月4日
  • java软件工程师月薪多少_软件工程师的工资待遇

    java软件工程师月薪多少_软件工程师的工资待遇java软件工程师月薪多少?到底能拿到高工资吗?想知道吗?相信这个问题困扰了很多刚入行学习java技术的人,现在带着疑问跟随达内北京java培训机构一起去了解一下吧。其实,随着互联网的发展,java软件工程师的市场需求也是非常大的,因此,java软件工程师的未来发展前景以及薪资待遇都是不错的,至于Java软件工程师一个月能挣多少钱的问题,其实Java软件工程师月薪的问题,事实上没有什么标准答案,…

    2022年9月24日
  • 如何配置maven本地仓库_maven指定本地仓库

    如何配置maven本地仓库_maven指定本地仓库1)配置本地仓库1)Maven的核心程序并不包含具体功能,仅负责宏观调度。具体功能由插件来完成。Maven核心程序会到本地仓库中查找插件。如果本地仓库中没有就会从远程中央仓库下载。此时如果不能上网则无法执行Maven的具体功能。为了解决这个问题,我们可以将Maven的本地仓库指向一个在联网情况下下载好的目录。2)Maven默认的本地仓库:~.m2\repository目录。Tips:~表示当前用户的家目录。3)Maven的核心配置文件位置:解压目录E:\apache-maven.

    2022年9月14日

发表回复

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

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