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