mark一个b站视频,视频地址:https://www.bilibili.com/video/BV1nE411n7wL?share_source=copy_web
附上手写c++代码,丢入vs可直接运行
(头文件比较乱,因为是之前用过的,懒得删了)
#include<iostream>
#include<math.h>
#include<unordered_set>
#include<memory>
#include<head.h>
#include<array>
#include<algorithm>
#include<unordered_map>
#include<valarray>
int GetMin(std::string& str)
{
using namespace std;
int i = 0, j = 1, k = 0;
int len = str.size();
while (i < len && j < len && k < len) {
//str[i+k]与str[j+k]依次进行比较
int compare = str[(i + k) % len] - str[(j + k) % len];
//相等的情况下,k++
if (compare == 0) {
k++;
}
else
{
if (compare > 0)
{
//如果k为0说明是常规比较
if (k == 0)
{
i = j;
}
else
{
i = i + k + 1;
}
}
else
{
//如果k为0说明是常规比较
if (k == 0)
{
j++;
}
else
{
j = j + k + 1;
}
}
//i和j一样就没有意义了
if (i == j)
{
j++;
}
k = 0;
}
}
//min即为最小字符串表示的下标
return min(i,j);
}
int main()
{
using namespace std;
string line = "dbac";
cout << GetMin(line) << endl;
return 0;
}