@maxemga

Как можно улучшить представленный код?

function func(s, a, b) {

    if (s.match(/^$/)) {
        return -1;
    }

    var i = s.length -1;
    var aIndex = -1;
    var bIndex = -1;

    while ((aIndex == -1) && (bIndex == -1) && (i > 0)) {

        if (s.substring(i, i +1) == a) {
            aIndex = i;
        }
        if (s.substring(i, i +1) == b) {
            bIndex = i;
        }
        i = i - 1;

    }

    if (aIndex != -1) {
        if (bIndex == -1) {
            return aIndex;
        }
        else {
            return Math.max(aIndex, bIndex);
        }
    }

    if (bIndex != -1) {
        return bIndex;
    }
    else {
        return -1;
    }
}
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
const func = (s, a, b) => Math.max(s.lastIndexOf(a), s.lastIndexOf(b));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TheSnegok
@TheSnegok
const func = (s, a, b) => {
    if (s.match(/^$/)) {
        return -1;
    }

    let aIndex = -1;
    let bIndex = -1;

if(aIndex === -1 && bIndex  === -1) {
   for(let i = s.length -1;i > 0;i--) {
        if (s.substring(i, i +1) === a) {
            aIndex = i;
        }
        if (s.substring(i, i +1) === b) {
            bIndex = i;
        }
    }
}

    if (aIndex !== -1) {
        return bIndex === -1 ? aIndex :  Math.max(aIndex, bIndex);
    }
    return bIndex !== -1 ? bIndex : -1;

На работоспособность не проверял!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы