[LeetCode] (#844) Backspace String Compare

728x90

Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.

Note that after backspacing an empty text, the text will continue empty.

 

Example 1:

Input: S = "ab#c", T = "ad#c"

Output: true

Explanation: Both S and T become "ac".

 

Example 2:

Input: S = "ab##", T = "c#d#"

Output: true

Explanation: Both S and T become "".

 

Example 3:

Input: S = "a##c", T = "#a#c"

Output: true

Explanation: Both S and T become "c".

 

Example 4:

Input: S = "a#c", T = "b"

Output: false

Explanation: S becomes "c" while T becomes "b".

 

Note:

  • 1 <= S.length <= 200
  • 1 <= T.length <= 200
  • S and T only contain lowercase letters and '#' characters.

Follow up:

  • Can you solve it in O(N) time and O(1) space?
class Solution {
	public String backspace( String s ) {
		LinkedList<Character> stack = new LinkedList<>();
		String r = "";
		for( int i = 0; i < s.length(); i++ ) {
			char c = s.charAt(i);
			if( c == '#' ) {
				if( !stack.isEmpty() ) stack.pollLast();
				else continue;
			}
			else stack.addLast( c );
		}
		while( !stack.isEmpty() )
			r += stack.pollFirst();
		return r;
	}
	
	public boolean backspaceCompare(String S, String T) {
        
		if( backspace(S).equals( backspace(T) ) ) return true;
		return false;
    }
}
반응형