題目 字串移位包含問題

2021-10-24 02:22:31 字數 693 閱讀 9315

對於乙個字串來說,定義一次迴圈移位操作為:將字串的第乙個字元移動到末尾形成新的字串。

給定兩個字串s1和s2,要求判定其中乙個字串是否是另乙個字串通過若干次迴圈移位後的新字串的子串。

兩個字串,長度不超過30。

如果乙個字串是另乙個字串通過若干次迴圈移位產生的新串的子串,則輸出true,否則輸出false。

【輸入】

aabcd cdaa
【輸出】

true
#include

#include

#include

using

namespace std;

const

int n =61;

char s1[n]

, s2[n]

, x[n]

, t[n]

;int l1, l2;

intmain()

strcpy

(x, s1)

;//將長字串拼接在自己後面,判斷短的是否是拼接後的子串 if(

strstr

(strcat

(s1, x)

, s2)

==null

)else

return0;

}

字串移位包含問題

問題描述 給定兩個字串s1和s2,要求判定s2是否能夠被s1做迴圈移動得到的字串包含。如s1 aabcd和s2 cdaa,則s1迴圈移動後包含s2,返回true s1 abcd和s2 acbd,則s1迴圈移動後不包含s2,返回false 解題思路 1 可以發現,s1迴圈移動後的結果肯定包含在字串s1...

字串移位包含問題

本問題 於 程式設計之美 問題描述 給定兩個字串s1和s2,要求判定s2是否能夠被通過s1做迴圈移位 rotate 得到的字串包含。例如,給定s1 aabcd和s2 cdaa,返回true 給定s1 abcd和s2 acbd,返回false。下面有兩種解法,第一種是列舉法 第二種是用了一種技巧,實現...

字串移位包含

給定兩個字串s1和s2 要求判定s2是否能夠被通過s1作迴圈移位 得到的字串包含 假設給定s1 aabcd s2 cdaa 返回true 給定s1 abcd s2 acbd false 方法1 窮舉法 將長度為n的s1移動n次 每次移動1為 檢視是否包含s2 方法2 將長度為n的s1移動n次 保留每...