字典序最小字符串旋转
让我们考虑给定一个字符串,我们知道该字符串是一个字符序列。词典旋转是字符串的旋转,按词典顺序转换字符。
解决方案很简单,我们简单地将给定的字符串与其自身连接起来,然后在另一个数组中,存储字符串的所有旋转。之后按升序对数组进行排序,最小值为最终结果。
输入和输出
Input: The String “BCAAFAABCD” Output: 旋转字符串: “AABCDBCAAF”
算法
minStrRotation(str)
输入-给定的字符串。
输出- 所需的最小字符串旋转。
Begin
n := length of str
define strArr to store all rotations
tempStr := concatenate str with str again
for i := 0 to n, do
strArr[i] := substring of tempStr from (i to n)
done
sort the strArr
return strArr[0]
End示例
#include输出结果#include using namespace std; string minStrRotation(string str) { int n = str.size(); string strArray[n]; //存储str的所有旋转的数组 string tempStr = str + str; //将str连接两次 for (int i = 0; i < n; i++) strArray[i] = tempStr.substr(i, n); //获取从第i个索引到第n个索引的子字符串 sort(strArray, strArray+n); return strArray[0]; //第一个索引是结果 } int main() { string str; cout << "输入字符串: "; cin >> str; cout << "旋转字符串: " << minStrRotation(str); }
输入字符串: BCAAFAABCD 旋转字符串: AABCDBCAAF
热门推荐
9 祝福语简短的微信
10 婚礼酒祝福语简短大气
11 学校校长新年祝福语简短
12 爸爸生日的祝福语简短
13 鼠年同事祝福语简短创意
14 生日摆摊祝福语简短独特
15 牛年企业祝福语简短大气
16 送女儿礼物祝福语简短
17 惊喜自己的祝福语简短
18 送给表姐中秋祝福语简短