Мне недавно задали этот вопрос в интервью:
Если заданы две строки s и t, вернуть, если они равны, когда обе они введены в пустые текстовые редакторы.# означает символ возврата на одну позицию.
Input: S = "ab#c", T = "ad#c"
Output: true
Explanation: Both S and T become "ac".
Я придумала следующее решение, но оно неэффективно:
public static boolean sol(String s, String t) {
return helper(s).equals(helper(t));
}
public static String helper(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c != '#')
stack.push(c);
else if (!stack.empty())
stack.pop();
}
return String.valueOf(stack);
}
Я хотел посмотреть, есть ли лучший способчтобы решить эту проблему, которая не использует стек.Я имею в виду, можем ли мы решить это в O (1) пространстве сложности?
Примечание: у нас также может быть несколько символов возврата.