-4

私は2つの文字列を持っていaますb. a3番目の文字列を作成せずに回転するbか、その逆かを知りたいです。

4

1 に答える 1

1

文字列 a は、L == len(a) == len(b) となるような L が存在し、a[ (i+j) % L] == b[i] for all 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 に答える