Минимальное количество ходов для получения лексикографического наименьшего значения путем вращения строки

Я делаю задачу, чтобы получить минимальное количество ходов, необходимое для получения наименьшего лексикографического значения данной строки. Сначала я добавил строку и повернул ее, чтобы сохранить на карте с ключом в качестве движения. Затем я вернул первый ключ карты, который дает мне maxMoves, чтобы получить эту минимальную лексикографическую строку. Например: анадама => надамаа => адамаан => дамана => аманаад => маанада => анадам. Здесь output = 6, поскольку для получения строки с наименьшим лексикографическим значением требуется шесть поворотов.

Когда я пробегаю представление, он говорит, что Abort Called или Runtime Error-Message Masked.

Вот мой код:

int minRotate(string inscription) {

map<string, int> concatedString;
int inscriptionLength = inscription.length();
inscription += inscription;

int minRotation = 0, roatateNum = 1, temp = 1;

//Checking if the given is lexiographically small in number
if (inscription.empty() || inscription.find_first_not_of(inscription[0]) == string::npos)
return minRotation;

for (int i = 1; i <= inscriptionLength; i++) {

//rotate(inscription.begin(), inscription.begin()+1, inscription.end());
string tempString = inscription.substr(temp, inscriptionLength);
concatedString[tempString] = i;
temp++;
}

map<string, int>::iterator it = concatedString.begin();
minRotation = it->second;

return minRotation;
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]