PHP 以获取相同字符串所需的最小旋转次数

PHP 以获取相同字符串所需的最小旋转次数

在这个问题中,我们需要通过对字符串进行旋转来实现相同的字符串,并需要计算旋转次数。

解决这个问题有不同的方法,但在这里我们将学习一些PHP中的最佳方法。第一种方法使用旋转子字符串,另一种方法将字符串从特定索引处分成两部分。

问题陈述 - 我们有一个包含n个字符的字符串str。我们需要找到字符串的最小旋转次数,以便再次得到相同的字符串。

示例示例

输入

str = "bcbc";

输出

2

解释 − 在第一次旋转中,字符串变为’cbcb’,在第二次旋转中,字符串变为’bcbc’。所以,我们需要总共2次旋转才能再次得到原始字符串。

输入

str = "opqropqr"

输出

4

解释 - 当我们进行4次左旋转时,我们可以得到原始字符串。

输入

str = ‘lnm’

输出

3

解释 − 字符串不包含重复的字符串。因此,我们需要执行与字符串长度相等的总旋转次数。

方法1

在这种方法中,我们从每个索引处取长度等于str字符串长度的子字符串,并检查它是否等于str字符串。如果是,则问题的答案是p。

步骤

步骤1 − 使用“.”操作符将str字符串与自身组合。

步骤2 − 从索引1开始进行总共len次迭代。

步骤3 − 使用substr()方法,并传递参数。它接受一个字符串作为第一个参数,起始索引作为第二个参数,子字符串的长度作为第三个参数。

步骤4 − 如果str和结果字符串相等,则返回当前索引值。

步骤5 − 如果我们找不到字符串旋转,则最后返回len。

示例

<?php
function totalRotations(str){
    // Merge the stringtmp = (str .str);
    len = strlen(str);
    // iterate the string
    for (p = 1;p <= len;p++) {
        // get a substring
        substring = substr(tmp, p,len);
        // return i, if the substring matches with the original string
        if (str == substring)
            returnp;
    }
    return len;
}str = "bcbc";
echo "The total numbers of rotations required to get the original string are: ";
echo totalRotations($str), "\n";
?>

输出

The total numbers of rotations required to get the original string are: 2

时间复杂度 − 在循环内部找到子字符串的时间复杂度为O(N^2)。

空间复杂度 − 存储子字符串的空间复杂度为O(N)。

我们学会了找到使得字符串相同所需的最小旋转次数。此外,用户可以解决需要找到使原始字符串还原的总右旋次数的问题,以进行更多训练。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程