public class BackspaceStringCompare { /* 解法一:从头扫描:用栈的思想,遇到#,则出栈。 */ public static boolean backspaceCompare(String S, String T) { return getString(S).equals(getString(T)); } private static String getString(String s){ StringBuilder sb=new StringBuilder(); for (char ch:s.toCharArray()){ if (ch!='#') sb.append(ch); else if (sb.length()>0) sb.deleteCharAt(sb.length()-1); } return sb.toString(); } /* 解法二:从尾扫描:遇到#,则不要下一个。 */ public static boolean backspaceCompare2(String S, String T) { return getString(S).equals(getString(T)); } private static String getString(String s){ StringBuilder sb=new StringBuilder(); int count=0; char c; for (int i=s.length()-1;i>=0;i--){ c=s.charAt(i); if (c=='#') count++; else { if (count>0) count--; else sb.append(c); } } return sb.toString(); } }
本文介绍了一种高效的字符串比较算法,特别适用于包含退格字符'#'的情况。通过两种方法实现:一是利用栈思想从头扫描字符串;二是从尾部开始扫描,跳过退格字符的影响。这两种方法都能准确判断两个字符串经过退格操作后的等价性。
454

被折叠的 条评论
为什么被折叠?



