1208. Проблема получения равных подстрок в рамках бюджета (Leetcode)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 1208. Проблема получения равных подстрок в рамках бюджета (Leetcode)

Сообщение Anonymous »

В вопросе говорится следующее:
Вам даны две строки s и t одинаковой длины и целое число maxCost.
Вы хотите заменить s на t. Замена i-го символа s на i-й символ t стоит |s - t| (т. е. абсолютная разница между значениями символов ASCII).
Возвратите максимальную длину подстроки s, которую можно изменить, чтобы она была такой же, как соответствующая подстрока t с помощью стоимость меньше или равна maxCost. Если нет подстроки из s, которую можно было бы заменить на соответствующую подстроку из t, верните 0.
Мое решение, которое я пробовал:

Код: Выделить всё

class Solution {
public int maxCost(char a, char b) {
return Math.abs((int) a - (int) b);
}

public int equalSubstring(String s, String t, int maxCost) {
int l = s.length();
int i = 0;
int remaining_cost = maxCost;
int ans = 0;

int j = 0;
while (i < l) {
while (remaining_cost >= 0 && j < l) {
int curr_cost = maxCost(s.charAt(j), t.charAt(j));
if (j < i) {
i = j;
}
remaining_cost -= curr_cost;
j++;
}
ans = Math.max(ans, (j - i - 1));
remaining_cost += maxCost(s.charAt(i), t.charAt(i));
i++;
}

return ans;
}
}
он ​​прошел для большинства тестовых случаев, но не прошел для:

Код: Выделить всё

s = "krpgjbjjznpzdfy"
t = "nxargkbydxmsgby"
maxCost = 14
Ожидаемый результат = 4, но мой результат равен 3

Я не могу понять, в чем дело

Подробнее здесь: https://stackoverflow.com/questions/785 ... code-issue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»