LeetCode 1209. Remove All Adjacent Duplicates in String II

原题链接在这里:https://leetcode.com/problems/remove-all-adjacent-duplicates-in-string-ii/

题目:

Given a string s, a k duplicate removal consists of choosing k adjacent and equal letters from s and removing them causing the left and the right side of the deleted substring to concatenate together.

We repeatedly make k duplicate removals on s until we no longer can.

Return the final string after all such duplicate removals have been made.

It is guaranteed that the answer is unique.

 

Example 1:

Input: s = "abcd", k = 2
Output: "abcd"
Explanation: There's nothing to delete.

Example 2:

Input: s = "deeedbbcccbdaa", k = 3
Output: "aa"
Explanation: 
First delete "eee" and "ccc", get "ddbbbdaa"
Then delete "bbb", get "dddaa"
Finally delete "ddd", get "aa"

Example 3:

Input: s = "pbbcggttciiippooaais", k = 2
Output: "ps"

Constraints:

  • 1 <= s.length <= 10^5
  • 2 <= k <= 10^4
  • s only contains lower case English letters.

题解:

Have two points i and j.

j points to current index in s.

i points to end of result.

Array count is the number of adjacent duplicates.

first do arr[i] = arr[j].

Update count[i]. If arr[i] == arr[i - 1], then count[i] = count[i - 1] + 1.

When count[i] hits k, then set back i by k.

Time Complexity: O(n). n = s.length().

Space: O(n).

AC Java:

 1 class Solution {
 2     public String removeDuplicates(String s, int k) {
 3         if(s == null || s.length() < k){
 4             return s;
 5         }
 6         
 7         int n = s.length();
 8         int [] count = new int[n];
 9         int i = 0;
10         char [] arr = s.toCharArray();
11         for(int j = 0; j < n; j++, i++){
12             arr[i] = arr[j];
13             count[i] = i > 0 && arr[i] == arr[i - 1] ? count[i - 1] + 1 : 1;
14             if(count[i] == k){
15                 i -= k;
16             }
17         }
18         
19         return new String(arr, 0, i);
20     }
21 }

类似Remove All Adjacent Duplicates In String.

posted @ 2020-02-18 06:37  Dylan_Java_NYC  阅读(595)  评论(0编辑  收藏  举报