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 = + ; char s[N], t[N]; void Init(int * a, int n){ for(int i = ; i < n; i++) a[i] = ;}
int Work(){
int lens = strlen(s), lent = strlen(t);
set<int> next[];
int vis[]; Init(vis, );
for(int i = ; i < lens; i++)
vis[s[i] - 'a'] = , next[s[i]-'a'].insert(i); for(int i = ; i < lent; i++) if(!vis[t[i]-'a']) return -; int cur = , k = ; set<int>::iterator it; for(int i = ; i < lent; i++){
int p = t[i] - 'a';
if((it = next[p].lower_bound(cur)) != next[p].end()) cur = (*it) + ;
else cur = , k++, i--;
}
return k;
}
int main(){ _
while(cin >> s >> t){
cout << Work() << endl;
}
}

最新文章

  1. Mysql 命令大全
  2. Install Sogoupinyin in Ubuntu
  3. perl reverse 函数
  4. zpf 视图
  5. MFC视图切换大全总结
  6. 经历:如何设置jquery easyui中下拉框不可编辑
  7. PropertyGrid—默认属性,默认事件,属性默认值
  8. Nginx阅读笔记(二)之location的用法
  9. QT---系统托盘图标不显示原因
  10. Arrays.asList的那点事
  11. jsp 条件查询、列表分页
  12. fidder(介绍)
  13. xnconvert 图片转换工具
  14. Codeforces Beta Round #31 (Div. 2, Codeforces format)
  15. notecase的下载与安装(全网最详细)(图文详解)
  16. Oracle EBS - Setup: 配置文件Profile
  17. InnoSetup打包时出现Interal error: CallSpawnServer: Unexpected response: $0.错误的解决办法
  18. 小程序之自定义组件 ---- 列表goodsList
  19. 设置myeclipse文件的打开格式
  20. Java解读内存,优化编程

热门文章

  1. Tarjan 【整理】
  2. [笔记]MongoDB 二(Linux下MongoDB API C++编程)
  3. JavaWeb-SpringBoot_一个类实现腾讯云SDK发送短信
  4. JavaWeb_(MVC)管理员后台商品查询demo
  5. shell编程连接postgres数据库(数据备份)
  6. C++入门经典-例3.13-不加break的switch判断语句
  7. c++匿名函数精简写法
  8. numpy小记
  9. Python学习笔记:外部数据的输入、存储等操作
  10. vue初级 总结