2012-08-26 28 views
-4

我有兩個字符串ab。我想知道如果a是輪換b或反之亦然,而不創建第三個字符串。如何找出一個字符串是否是另一個字符串的旋轉

+0

你到目前爲止已經找到了什麼? – mathematician1975

+0

我首先比較它們的長度,如果匹配,我繼續找到字符串a的第一個字母b,然後通過字符比較來比較字符。 – user1625802

+4

然後,在問題中說出這是一個好主意,因爲它表明你實際上已經嘗試過自己做一些事情。當你問一個問題,而這個問題聽起來像你還沒有嘗試過,這個問題通常會被降低,最終會被關閉。將來,解釋你自己嘗試過的事情,這會增加你獲得良好答案的機會。 – mathematician1975

回答

1

一個字符串a是b的一個旋轉當且僅當存在一個L,使得L == len(a)== len(b),並且存在一個偏移量0(0)< = j < len這樣一個[(i + j)%L] == b [i] 0 < L.

在c代碼中(假設L是字符串的公共長度。是b的旋轉,否則爲0):

int i, j, is_rot; 
for (i = 0; i< L; i++){ 
    is_rot = 1; 
    for (j = 0; j<L; j++){ 
     if (a[ (j + i) %L] != b[j]){ 
      is_rot = 0; 
      break; 
     } 
    } 
    if (is_rot) return 1; 
} 
return 0; 
+0

(j = 0; j user1625802

+0

Woops。將它編輯到它所屬的位置,並添加了另一個缺失的大括號。對自我的教訓:在發佈之前測試代碼:) –

+0

仍然缺少大括號但感謝:) – user1625802

相關問題