2012-08-26 20 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

相关问题