如何确定一个字符串是否是另一个字符串的旋转

时间:2012-08-26 12:26:57

标签: c string

我有两个字符串ab。我想知道a是否是b的轮换,反之亦然,而不创建第三个字符串。

1 个答案:

答案 0 :(得分:1)

当且仅当存在L使得L == len(a)== len(b)并且存在偏移0< = j<时,字符串a是b的旋转。 len(a)使得对于所有0< = i< 1,[(i + j)%L] == b [i]。升。

在c代码中(假设L是字符串的公共长度。如果a是b的旋转,则返回1,否则返回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;