zoukankan      html  css  js  c++  java
  • A. Many Equal Substrings(思维)

    传送门

      写这题顺便学了下string类里substr的用法substr有2个参数,第一个参数为你需要截取的子串的起始位置的索引(下标),第二个参数为从起始位置开始截取的长度。

      这题就用到了substr函数,这题首先要分2种情况,一种是t串里不含相同的前缀后缀时,s串里有多少个t串,就输出多少次t串就可以了,这样可以保证是最短的,第二种就是有相同前缀后缀,那就把最大的相同前缀后缀的长度求出来,每次输出t串时就不必整个t串都输出了,因为t串具有相同前缀后缀这个性质,前面一个输出的t串的后缀就可以作为当前输出的t串的前缀,这样子就可以保证是最短的。

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    int n,ti,nxt[55];
    int main()
    {
        scanf("%d %d",&n,&ti);
        cin>>s;
        nxt[0]=0;
        for(int i=1,k=0;i<n;i++)
        {
            while(k>0&&s[i]!=s[k])
                k=nxt[k-1];
            if(s[i]==s[k])
                k++;
            nxt[i]=k;
        }
        if(nxt[n-1]==0)
        {
            while(ti--)
                cout<<s;
            cout<<endl;
            return 0;
        }
        string p=s.substr(nxt[n-1],n-nxt[n-1]);
        cout<<s;
        for(int i=2;i<=ti;i++)
        {
            cout<<p;
        }
        cout<<endl;
        return 0;
    }
    
  • 相关阅读:
    Dubbo简介
    Centos之关机和重启命令
    VirtualBox中CentOS7.2 网络配置(固定IP+联网)
    c#Post方法封装处理
    C# 异步方法处理
    将XMLrequest 改写成fetch
    AsyncCallback
    Promise
    FETCH
    HTML DOM Event 对象
  • 原文地址:https://www.cnblogs.com/eason9906/p/11754875.html
Copyright © 2011-2022 走看看