Учитывая два целых числа 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”