Показать сообщение отдельно
  #53 (permalink)  
Старый 21.02.2011, 10:33
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

По первой задаче получилось немного громоздко, но работает вроде как надо:
String.prototype.index = function(sep) {
        var l = this.length, sl = sep.length - 1, i = 0, j = 0, w = '';
        while (i < l) {
            if ((this.charAt(i) == sep.charAt(0) && this.charAt(i + sl) == sep.charAt(sl)) || j != 0){
                if (j <= sl) {w += this.charAt(i + j); j++;}
                else if (j >= sl) if (w == sep) return i; else {w = ''; j = 0; i++; continue;}} else i++;}
        return -1;
    }

    var s1 = 'aababaO_o',
        s2 = 'aababababaO_o';
    l1 = 'aba', l2 = 'abac', l3 = 'aa', l4 = 'O_o', l5 = 'abaO', l6 = 'ababaO';

    alert([
        [s1.index(l1), s1.indexOf(l1)],
        [s1.index(l2), s1.indexOf(l2)],
        [s1.index(l3), s1.indexOf(l3)],
        [s1.index(l4), s1.indexOf(l4)],
        [s1.index(l5), s1.indexOf(l5)],
        [s2.index(l6), s2.indexOf(l6)]
    ].join('\n'))
Ответить с цитированием