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


相关推荐

  • 单幅图像超分辨率重建(图像超分)

    代码的解析已经给出,现在补上:单图像超分辨率重建示例代码解析目录一、简介二、前期准备三、运行程序四、参考目录一、简介图像超分辨率重建技术就是利用一组低质量、低分辨率图像(或运动序列)来产生单幅高质量、高分辨率图像。图像超分辨率重建应用领域及其宽广,在军事,医学,公共安全,计算机视觉等方面都存在着重要的应用前景。在计算机视觉领域,图像超分辨率重建技术有可能使图像实现从检出…

    2022年4月17日
    201
  • 海量数据处理的方法总结

    海量数据处理的方法总结

    2021年10月5日
    44
  • C语言飞机游戏

    C语言飞机游戏300行代码实现最简易的飞机小游戏,简单有趣,快来试试

    2022年5月12日
    44
  • 结构体数组初始化

    结构体数组初始化《代码大全》建议在变量定义的时候进行初始化,但是很多人,特别是新人对结构体或者结构体数组定义是一般不会初始化,或者不知道怎么初始化。1、初始化typedefstruct_TEST_T{       inti;       charc[10];}TEST_T;TEST_T gst  ={1,“12345”};//可以初始化,设置i为1

    2022年7月18日
    12
  • 分析函数 ExecuteSQL

    分析函数 ExecuteSQL
    在学生管理系统中,执行sql语句时,我们用到这个函数,当时有几点不明,现在说说我的理解。
     
    PublicFunctionExecuteSQL(ByValSQLAsString,MsgStringAsString)AsRecordset
      ……
      sTokens=Split(SQL)
    ‘Split返回一个下标从0开始的一维数组,包含指定数目的子字符串。”Select”+”*”+”from”+”user_Info”+

    2022年5月11日
    40
  • 背包问题九讲笔记_多重背包

    背包问题九讲笔记_多重背包摘自TianyiCui童鞋的《背包问题九讲》,稍作修改,方便理解。本文包含的内容:问题描述 基本思路(和完全背包类似) 转换为01背包问题求解(直接利用01背包)———————————————1、问题描述已知:有一个容量为V的背包和N件物品,第i件物品最多有Num[i]件

    2022年7月12日
    11

发表回复

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

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