-4

我有两个字符串ab. 我想知道是否a是旋转b或反之亦然而不创建第三个字符串。

4

1 回答 1

1

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

在 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;
于 2012-08-26T12:37:08.863 回答