Вам даны две строки 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
Я не могу понять, в чем дело
Подробнее здесь: https://stackoverflow.com/questions/785 ... code-issue
Мобильная версия