Я пытаюсь решить this problem in spojлексикографически наименьшая строка после вращения
Мне нужно найти число оборотов заданной строки, которые сделают лексически наименьшим среди всех вращений.
Например:
Оригинал: ama
Первый поворот: maa
Второй поворот: aam
Это лексикографически наименьшее вращение поэтому ответ 2.
Вот мой код:
string s,tmp;
char ss[100002];
scanf("%s",ss);
s=ss;
tmp=s;
int i,len=s.size(),ans=0,t=0;
for(i=0;i<len;i++)
{
string x=s.substr(i,len-i)+s.substr(0,i);
if(x<tmp)
{
tmp=x;
t=ans;
}
ans++;
}
cout<<t<<endl;
Для этого решения я получаю «Предел времени». Я не понимаю, какие оптимизации можно сделать. Как увеличить скорость моего решения?
Пожалуйста, не используйте региональные аббревиатуры типа «нет» и «плз». У StackOverflow есть глобальная аудитория, многие из которых не являются носителями английского языка. Кроме того, что такое ** TLE **? –
«Другие» оптимизации? Помимо чего? –
Вы отвечаете на неправильный вопрос. Связанный вопрос - сколько вращений, а не то, что является лексикографически наименьшим ответом. – Watusimoto