Учитывая два целых числа a и b, верните любую строку s такую, что:
s имеет длину a+b и содержит ровно буквы “a” и ровно буквы “b”,
Подстрока ‘aaa’ не встречается в s, и
Подстрока “bbb” не встречается в s.
Пример 1:
Ввод:, Вывод: “abb” Объяснение: “abb”, “bab” и “bba” – все правильные ответы.
Пример 2:
Ввод:, Вывод: “алабама”
0, b
Гарантируется, что такое s существует для данного a и b.
Как правило, может возникнуть 4 условия.
- a <3 &&b <3
Для этого мы просто печатаем строку любым удобным для нас способом, так как мы не получим aaa или bbb в качестве подстроки.
- a&&b <3
Для этого мы ставим b всякий раз, когда последние 2 символа aa так как там может быть подстрока aaa .
- a <3 &&b
Для этого мы ставим a всякий раз, когда последние 2 символа bb так как там может быть подстрока bbb .
- а&и б
Для этого, всякий раз, когда мы видим аа как последние 2 символа, начните печатать b и всякий раз, когда мы видим bb в качестве последних 2 символов начните печатать a .
Это основная идея, которую мы можем использовать для решения этой проблемы, и в Java есть метод EndsWith() , который очень удобен в этом случае. Мы можем использовать его жизнь заканчивается ("aa") или заканчивается ("bb") при проверке условий.
class Solution {
public String strWithout3a3b(int a, int b) {
StringBuilder sb = new StringBuilder();
while (a > 0 || b > 0) {
String s = sb.toString();
// if we have aa as the last 2 characters, then the next one is b
if (s.endsWith("aa")) {
sb.append("b");
b --;
}
// if we have bb as the last 2 characters, then the next one is a
else if (s.endsWith("bb")) {
sb.append("a");
a --;
}
// if a > b, append a
else if (a > b) {
sb.append("a");
a --;
}
// if b >= a, append b
else {
sb.append("b");
b --;
}
}
return sb.toString();
}
}
Временная сложность: Это будет O(a + b), что соответствует длине строки
Сложность пространства: Это будет O(a + b), когда мы создадим новую строку длины a + b, и если мы рассмотрим это в анализе пространства.
Проблемы с Leetcode Решены
Ежедневные проблемы с Leetcode и другие проблемы с платформами решены
Оригинал: “https://dev.to/rohithv07/984-string-without-aaa-or-bbb-leetcode-medium-1e4n”