|
1 | 1 | classSolution {
|
2 |
| -publicStringremoveOccurrences(Strings,Stringpart) { |
3 |
| -while (true) { |
4 |
| -intidx =s.indexOf(part); |
5 |
| -if (idx == -1) { |
6 |
| -break; |
7 |
| - } |
8 |
| -s =s.substring(0,idx) +s.substring(idx +part.length()); |
| 2 | +publicStringremoveOccurrences(Strings,Stringpart) { |
| 3 | +Stack<Character>stack =newStack<>(); |
| 4 | +intn =s.length(); |
| 5 | +intpartLength =part.length(); |
| 6 | +for (inti =0;i <n;i++) { |
| 7 | +stack.push(s.charAt(i)); |
| 8 | +if (stack.size() >=partLength &&check(stack,part,partLength)) { |
| 9 | +for (intj =0;j <partLength;j++) { |
| 10 | +stack.pop(); |
| 11 | + } |
| 12 | + } |
| 13 | + } |
| 14 | +StringBuildersb =newStringBuilder(); |
| 15 | +while (!stack.isEmpty()) { |
| 16 | +sb.append(stack.pop()); |
| 17 | + } |
| 18 | +returnsb.reverse().toString(); |
| 19 | + } |
| 20 | + |
| 21 | +privatebooleancheck(Stack<Character>stack,Stringpart,intpartLength) { |
| 22 | +Stack<Character>temp =newStack<>(); |
| 23 | +temp.addAll(stack); |
| 24 | +for (inti =partLength -1;i >=0;i--) { |
| 25 | +if (temp.isEmpty() ||temp.peek() !=part.charAt(i)) { |
| 26 | +returnfalse; |
| 27 | + } |
| 28 | +temp.pop(); |
| 29 | + } |
| 30 | +returntrue; |
9 | 31 | }
|
10 |
| -returns; |
11 |
| - } |
12 | 32 | }
|