Мне недавно задали этот вопрос в интервью:
Если заданы две строки 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) пространстве сложности?
Примечание: у нас также может быть несколько символов возврата.