C++程序 计算机领域的最小旋转次数的字符串
给定一个字符串,我们需要找到将其转换为相同字符串所需的最小旋转次数。
例子:
输入:s =“geeks”
输出:5
输入:s =“aaaa”
输出:1
检查字符串是否相互旋转的程序
- 步骤1: 初始化结果= 0(这里结果是旋转次数)
- 步骤2: 取一个临时字符串等于原始字符串与自身拼接。
- 步骤3: 现在从第二个字符(或索引1)开始取与原始字符串大小相同的临时字符串的子字符串。
- 步骤4: 增加计数。
- 步骤5: 检查子字符串是否变成原始字符串。如果是,则退出循环。否则,转到步骤2,从下一个索引重复它。
下面是上述方法的实现:
// C ++程序确定最小数量
// 的旋转次数以生成相同的
//字符串。
#include <iostream >
using namespace std;
//返回旋转次数以使其
//相同的字符串返回。
int findRotations(string str)
{
// tmp是连接的字符串。
string tmp = str + str;
int n = str.length();
for(int i = 1; i <= n; i ++)
{
//来自原始子串的i索引的子串
//字符串大小。
字符串子串= tmp.substr(i,str.size());
//如果子字符串与原始字符串匹配
//那么我们就会退出循环。
if(str == substring)
返回i;
}
返回n;
}
//驱动代码
int main()
{
字符串str =“abc”;
cout << findRotations(str) << endl;
返回0;
} ```
输出
3
时间复杂度: O(n 2 )
辅助空间: O(n)