20.02.2011, 22:36
|
Профессор
|
|
Регистрация: 14.12.2009
Сообщений: 155
|
|
float,
значит надо переделать алгоритм, чтобы итераций было не больше чем символов в строке. Посмотрите мой пост выше.
|
|
20.02.2011, 22:37
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
with-love-from-siberia, приведите код, а я придумаю контрпример (не забудьте протестировать для начала на уже имеющихся примерах).
|
|
20.02.2011, 23:21
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
String.prototype.at = function(str) {
var tl = this.length, sl = str.length;
for(var i=j=0; i<tl; i++) {
if(this[i] == str[j] && sl == ++j) return ++i-j;
}
return -1;
}
var s1 = 'aababababaO_o', l1 = 'ababaO', l2 = 'abac', l3 = 'aa', l4 = 'O_o';
alert([
[s1.at(l1), s1.indexOf(l1)],
[s1.at(l2), s1.indexOf(l2)],
[s1.at(l3), s1.indexOf(l3)],
[s1.at(l4), s1.indexOf(l4)]
].join('\n') );
Последний раз редактировалось monolithed, 20.02.2011 в 23:28.
|
|
20.02.2011, 23:33
|
|
Профессор
|
|
Регистрация: 01.07.2010
Сообщений: 387
|
|
String.prototype.at = function(str) {
var tl = this.length, sl = str.length;
for(var i=j=0; i<tl; i++) {
if(this[i] == str[j] && sl == ++j) return ++i-j;
}
return -1;
}
var s1 = 'aababababaO_o', l1 = 'aabaO', l2 = 'abac', l3 = 'aa', l4 = 'O_o';
alert([
[s1.at(l1), s1.indexOf(l1)],
[s1.at(l2), s1.indexOf(l2)],
[s1.at(l3), s1.indexOf(l3)],
[s1.at(l4), s1.indexOf(l4)]
].join('\n') );
|
|
20.02.2011, 23:34
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
String.prototype.at = function(str) {
var tl = this.length, sl = str.length;
for(var i=0, j=0; i<tl; i++) {
if(this[i] == str[j] && sl == ++j) return ++i-j;
}
return -1;
}
var s1 = 'ababc', l1 = 'abac';
alert([
[s1.at(l1), s1.indexOf(l1)]
].join('\n') );
|
|
20.02.2011, 23:41
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
String.prototype.at = function(str) {
var tl = this.length, sl = str.length;
for(var i=j=0; i<tl; i++) {
if(this[i] == str[j] && sl == ++j && sl != i) return ++i-j;
}
return -1;
}
var s1 = 'ababc', l1 = 'abac', l2 = 'bc', l3 = 'aa', l4 = 'O_o';
alert([
[s1.at(l1), s1.indexOf(l1)],
[s1.at(l2), s1.indexOf(l2)],
[s1.at(l3), s1.indexOf(l3)],
[s1.at(l4), s1.indexOf(l4)]
].join('\n'));
Последний раз редактировалось monolithed, 20.02.2011 в 23:46.
|
|
20.02.2011, 23:48
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
String.prototype.at = function(str) {
var tl = this.length, sl = str.length;
for(var i=j=0; i<tl; i++) {
if(this[i] == str[j] && sl == ++j && sl != i) return ++i-j;
}
return -1;
}
var s1 = 'aabac', l1 = 'abac';
alert([
[s1.at(l1), s1.indexOf(l1)]
].join('\n'));
|
|
20.02.2011, 23:50
|
|
Профессор
|
|
Регистрация: 01.07.2010
Сообщений: 387
|
|
ааай. Ребят. Сложность в том, что при достаточной длине строки, на определённом этапе создаются перекрывания. Их число подстрока-1(так вроде), т.е. функция зависит от параметров.
monolithed
else блок там не для красоты стоит
|
|
21.02.2011, 00:10
|
Профессор
|
|
Регистрация: 14.12.2009
Сообщений: 155
|
|
Сообщение от B@rmaley.e><e
|
приведите код
|
Давайте наоборот. Простите, но мне уже лениво сегодня заниматься задачками для 1-2 курса спецфак-та. Я привел неполное словесное описание алгоритма. Предлагаю форуму завершить его формулировку и все вопросы отпадут.
Ну может быть завтра напрягусь (-:
|
|
21.02.2011, 00:34
|
|
Профессор
|
|
Регистрация: 01.07.2010
Сообщений: 387
|
|
Цитата:
|
Я привел неполное
|
Что-то в нём я не заметил путь обхода проблемы описанной выше.
|
|
|
|