c - 如何判断一个字符串是否是另一个字符串的旋转

标签 c string

我有两个字符串ab 。我想知道是否 ab 的旋转反之亦然,无需创建第三个字符串。

最佳答案

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

在c代码中(假设L是字符串的公共(public)长度。如果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;

关于c - 如何判断一个字符串是否是另一个字符串的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130111/

相关文章:

c - 在 C 中分配给数组

c - 如何在 C 中捕获长整型的溢出?

c - ASCII 英文文本/ASCII C 程序文本问题

ios - Objective C 为什么将字符串格式化为字符串

java - 如何从另一个字符串中获取一个字符串值

C:如何才能使 scanf() 输入具有两种格式之一?

Java 解析器 HTML 使用纯字符串方法?

python - 使用正则表达式替换 python 中字符串中的第 n 个子字符串

Java 快速字符串匹配(将文本关联到类别)

c - 通过引用将动态二维数组传递给另一个函数来分配动态二维数组