codevs 1061 重複子串

2022-03-21 21:42:32 字數 1134 閱讀 4435

題目描述 description

某電視台在每乙個星期天都有乙個福利彩票節目,在該節目中有乙個考察幸運觀眾記憶力的節目。節目的安排是這樣的:首先由節目主持人說出一串諸如「左1右2左2左3右4左1」的數值串,然後由幸運觀眾重複該數值串;如果幸運觀眾能全部記憶出節目主持人說的所有數值串,該觀眾將獲得一筆數目可觀的獎金。為了確保節目的質量,節目導演希望這種數值串中不含連續的2個以上相同子串,這樣數值串就不易記憶。他們稱這種有連續相同子串的數值串為「易數值串」,而這種相同子串稱為重複子串;無重複子串的數值串稱為「難數值串」。

例如,下列字串是「易數值串」:

(1)左1左1 (2)左1右2左3右2左3右2(3)左1右2左4左1右2左4右2

而下列字串是「難字串」:

(1)左1(2)左1右2(3)左1右2左1右1(4)左1右2右4左1右2

現假設:

(1)數值前只有「左」和「右」2個方向,分別用l和r代替「左」和「右」。

(2)數字範圍為1,2,3,4,5,6,7,8,9。

(3)所有子串指的是「左」或「右」開始的子串,以諸如「1右2左」的連續重複子串不計算為重複子串。

你的任務是:對於給定乙個數值串(串的長度<=100000),請你程式設計求出第一次出現的最長重複子串。

輸入描述 input description

輸入:輸入檔案為1行,它是一串數值串。

輸出描述 output description

輸出:輸出檔案為1行,它是輸入檔案中數值串的第一次出現的最長重複子串。如果無重複子串則輸出字串「no」。

樣例輸入 sample input

string.in :

l1r2l2l4r5l3l4r5l3r4r5l3r4r5r6l1              

樣例輸出 sample output

string.out:

l4r5l3

資料範圍及提示 data size & hint

#include#include#includeusing namespace std;

int main()

if (j==i+(l-i)/2) break;

}if (f)

for (int i=begin;ielse cout<<"no";

}

1039 重複子序列問題

pipi有兩個字串a和b,請你求出字串a最少重複幾次才能使得b是a的子串行。我們稱x是y的子串行當且僅當可以從y中刪除若干個字元得到x。例如對於a abb b bbaa 則a重複3次之後得到 abbabbabb 此時b bbaa 是 abbabbabb 的子串行。注意,原始串a即算作重複一次。多組資...

pipioj 1039 重複子序列問題

pipi有兩個字串a和b,請你求出字串a最少重複幾次才能使得b是a的子串行。我們稱x是y的子串行當且僅當可以從y中刪除若干個字元得到x。例如對於a abb b bbaa 則a重複3次之後得到 abbabbabb 此時b bbaa 是 abbabbabb 的子串行。注意,原始串a即算作重複一次。多組資...

1227 重複的子串模式

1227.重複的子串模式 中文english 給你乙個非空字串,判斷它能否通過重複它的某乙個子串若干次 兩次及以上 得到。字串由小寫字母組成,並且它的長度不會超過10000。樣例1 輸入 abab 輸出 true 說明 可以由它的子串 ab 重複兩次得到。樣例2 輸入 aba 輸出 false樣例3...