C++ 中求出返回相同字符串所需的最少旋转次数

c++server side programmingprogramming

问题描述

给定一个字符串,我们需要求出返回相同字符串所需的最少旋转次数

示例

如果输入字符串为"bbbbb",则至少需要旋转 1 次

算法

1. 初始化 result = 0
2. 创建一个临时字符串,该字符串等于原始字符串与其自身连接的结果。
3. 从临时字符串的第二个字符(即索引 1)开始,取出与原始字符串大小相同的子字符串。
4. 增加计数器。
5. 检查子字符串是否等于原始字符串。如果是,则跳出循环。否则,转到步骤 2,并从下一个索引处重复此操作。

示例

#include <bits/stdc++.h>
using namespace std;
int getRotationCount(string str) {
   string temp = str + str;
   int n = str.length();
   for (int i = 1; i <= n; ++i) {
      string sub = temp.substr(i, str.size());
         if (str == sub) {
            return i;
         }
   }
   return n;
}
int main() {
   string str = "bbbbb";
   cout << "Rotation count = " << getRotationCount(str) <<
   endl;
   return 0;
}

编译并执行上述程序,将生成以下输出

输出

Rotation count = 1

相关文章