字典序最小字符串旋转
让我们思考一个字符串类型,我们知道,字符串是字符序列。字典序旋转就是字符串旋转,按字典序转换字符。
解法很简单,我们简单地将给定的字符串本身进行串联,然后再在一个数组中,存储字符串的所有旋转情况。然后按升序对这个数组进行排序,最小的值就是最终结果。
输入输出
Input: The String “BCAAFAABCD” Output: Rotated String: “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 <iostream>
#include <algorithm>
using namespace std;
string minStrRotation(string str) {
int n = str.size();
string strArray[n]; //array to store all rotations of str
string tempStr = str + str; //concatinate str two times
for (int i = 0; i < n; i++)
strArray[i] = tempStr.substr(i, n); //get sub string from ith index to nth index
sort(strArray, strArray+n);
return strArray[0]; //The first index is the result
}
int main() {
string str;
cout << "Enter String: "; cin >> str;
cout << "Rotated String: " << minStrRotation(str);
}输出
Enter String: BCAAFAABCD Rotated String: AABCDBCAAF
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP