C++程序 计算机领域的最小旋转次数的字符串

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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例