zoukankan      html  css  js  c++  java
  • Hlg 1665 【KMP】.cpp

    题意:

      给出一个文本串str

      给出n个模板串arr

      问有多少个模板串可以由文本串中的两段子串组成,且两段子串在文本串中的先后顺序不变。

    思路:

      用两次KMP求出每个子串从第一个字符开始的第一个出现位置和从最后一个字符开始的第一个出现位置

      即next[0][i]表示模板串中以i结尾的子串在文本串中第一次出现的位置,next[1][i]表示模板串中以i开始到最后的子串在文本串中最后一次出现的位置

      然后看一下是否有next[0][i]<next[1][i+1]的情况存在..

      如果有代表这个模板串可以在文本串中找到符合要求的情况。

    Tips:

      ①. 用另外一个字符串来记录翻转的串的时候,要在最后加上一个'\0'

      ②. 用指针传数组的时候,memset(..)不能用,只能for来初始化。

    Code:

    View Code

    链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1665

  • 相关阅读:
    线性回归模型练习
    《代码整洁之道》读书笔记五
    第八周总结
    第七周总结
    《代码整洁之道》读书笔记四
    《代码整洁之道》读书笔记三
    第六周总结
    《代码整洁之道》读书笔记二
    第五周总结
    HDFS的JavaAPI操作
  • 原文地址:https://www.cnblogs.com/Griselda/p/2976727.html
Copyright © 2011-2022 走看看