Привет! Есть строки:
var str1 = "JOOOK",
str2 = "KOJOA",
str3 = "KKOOM",
str4 = "KOAOO",
str5 = "JOOOO";
после замены должно получиться следующее:
str1 = "JJJJK",
str2 = "KKJJA",
str3 = "KKKKM",
str4 = "KKAAA",
str5 = "JJJJJ";
как это сделать наиболее кратко и лаконично? (есть мнение что рекурсия мне поможет, но если не затруднит, готовый код был бы решением)
Спасибо!
Спасибо вам за отзывы, это первый мой вопрос здесь. Я по привычке не читал правила, опустим фразу "готовый код был бы решением". Я пока так придумал:
var line = "JOKOJ";
console.log(replaceSym(line)); // JJKKJ
function replaceSym(str)
{
var n = "";
if ( str[0] != "O" )
{
for( var i=0; i<str.length; i++)
{
n += str[i] == "O" ? str[i-1] : str[i];
}
}
return n;
}
Теперь думаю как сделать так если первый символ как раз искомый, значит нужно менять на второй, если он не "О". И да, символ обязательно должен быть "О". Спасибо!
update: вот только я поторопился и не заметил следующего:
var str1 = "JOOOK",
str2 = "KOJOA",
str3 = "KKOOM",
str4 = "KOAOO",
str5 = "JOOOO";
console.log(replaceSym(str1)); // JJOOK
console.log(replaceSym(str2)); // KKJJA
console.log(replaceSym(str3)); // KKKOM
console.log(replaceSym(str4)); // KKAAO
console.log(replaceSym(str5)); // KKAAO
Собственно финалочка:
var str1 = "JOOOK",
str2 = "KOJOA",
str3 = "KKOOM",
str4 = "KOAOO",
str5 = "JOOOO",
str6 = "OKJAK",
str7 = "OOOOA",
str8 = "OOOOO";
console.log(replaceSym(str1)); // JJJJK
console.log(replaceSym(str2)); // KKJJA
console.log(replaceSym(str3)); // KKKKM
console.log(replaceSym(str4)); // KKAAA
console.log(replaceSym(str5)); // KKJAK
console.log(replaceSym(str6)); // KKJAK
console.log(replaceSym(str7)); // AAAAA
console.log(replaceSym(str8)); // OOOOO
function replaceSym(str)
{
var n = "";
if ( str[0] != "O" )
{
for( var i=0; i<str.length; i++)
{
n += str[i] == "O" ? str[i-1] : str[i];
}
if ( n.indexOf("O") !== -1 )
{
n = replaceSym(n);
}
}
else if ( str != "OOOOO" )
{
for( var i=0; i<str.length; i++)
{
n += str[i] == "O" ? str[i+1] : str[i];
}
if ( n.indexOf("O") !== -1 )
{
n = replaceSym(n);
}
}
else
{
n = str;
}
return n;
}
Спасибо всем за потраченное время.