标签:Compare return ## tw Explanation Example Backspace Input Leetcode
Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character. 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?
1 class Solution { 2 public boolean backspaceCompare(String S, String T) { 3 int i = S.length() - 1, j = T.length() - 1; 4 int skipS = 0, skipT = 0; 5 6 while (i >= 0 || j >= 0) { // While there may be chars in build(S) or build (T) 7 while (i >= 0) { // Find position of next possible char in build(S) 8 if (S.charAt(i) == '#') {skipS++; i--;} 9 else if (skipS > 0) {skipS--; i--;} 10 else break; 11 } 12 while (j >= 0) { // Find position of next possible char in build(T) 13 if (T.charAt(j) == '#') {skipT++; j--;} 14 else if (skipT > 0) {skipT--; j--;} 15 else break; 16 } 17 // If two actual characters are different 18 if (i >= 0 && j >= 0 && S.charAt(i) != T.charAt(j)) 19 return false; 20 // If expecting to compare char vs nothing 21 if ((i >= 0) != (j >= 0)) 22 return false; 23 i--; j--; 24 } 25 return true; 26 } 27 }
Complexity Analysis
-
Time Complexity: O(M + N)O(M+N), where M, NM,N are the lengths of
S
andT
respectively. -
Space Complexity: O(1)O(1).
Tricy test cases:
"bxj##tw" "bxo#j##tw"
and
"ab##" "c#d#"
and
"bxj##tw" "bxj###tw"
标签:Compare,return,##,tw,Explanation,Example,Backspace,Input,Leetcode 来源: https://www.cnblogs.com/EdwardLiu/p/11626564.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。