Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задача по JavaScript (https://javascript.ru/forum/misc/30820-zadacha-po-javascript.html)

wawandas 20.08.2012 12:43

Deff, спасибо вам! отличная пища для ума!:victory:

nerv_ 20.08.2012 15:00

Цитата:

Сообщение от wawandas
как реализовать алгоритм который будет проверять является ли строка ротацией другой строки, пример: 'panama' являеться ротацией 'amapan'

еще раз прочитал задачу. Могу ошибаться, но в вашем случае будет достаточно: собрать хеш букв одной строки (какая именно буква + ее количество) и сверить его с другой.

nerv_ 20.08.2012 15:44

еще вариант
var text = '12345';
var i = text.length;
var len = i - 1;
var line = text;

while( i-- ) {
    line = line.slice( -1 ) + line.slice( 0, len );
    alert( line ) ;
}

Deff 20.08.2012 15:49

nerv_,

Там я продинамил второй Вариант - кады сдвиг против часовой

wawandas 20.08.2012 15:59

Deff,
nerv_,

громадное спасибище за внимание и старания!

oneguy 20.08.2012 16:28

Цитата:

Сообщение от wawandas
как реализовать алгоритм который будет проверять является ли строка ротацией другой строки, пример: 'panama' являеться ротацией 'amapan'

Ещё такое решение:
function TstСircular_movement(s1, s2) {
  if (s1.length!=s2.length)
    return -1;
  else return (s1+s1).indexOf(s2);
}
//тесты
alert(TstСircular_movement("panama", "amapan"));
alert(TstСircular_movement("panama", "panama"));
alert(TstСircular_movement("panama", "amapana"));

Deff 20.08.2012 16:36

oneguy, +
Классная идея!!!

oneguy 20.08.2012 16:43

Deff,
спасибо!
Учитывать отрицательные сдвиги не имеет смысла, так как они эквивалентны положительным сдвигам величиной n-i, где n - длина строки, а i - величина отрицательного сдвига.

wawandas 20.08.2012 16:45

oneguy,
спасибо!

удивляюсь тому, сколько может быть решений у одной задачи :blink:

Deff 20.08.2012 16:45

Цитата:

Сообщение от oneguy
Учитывать отрицательные сдвиги не имеет

oneguy,
я сообразил (- затёр


Часовой пояс GMT +3, время: 15:12.