可恶的王大锤 狂干了我几乎两个小时

1.核心思想就是维护一个队列,每次计算相同的字符有多少 ,只要是大于2我们就跟队列顶的数量进行比较,队列顶相同字符数量为2的话我们只添加一次,队列顶为1的话就添加2次,否则我们就只添加一次 2.我们所维持的pre变量就保持的是上一个字符的数量,我们需要实时根据我们往队列里添加次数来更新这个pre变量 3.最后就是我们将队列里的字符全部取出来就行

import java.util.*;
import java.lang.*;
public class Main {
    public static void main(String[] args) {
        Scanner reader=new Scanner(System.in);
        int n=reader.nextInt();
        String [] list=new String[n];
        for (int i=0;i<n;i++) {
            list[i]=reader.next();
        }
        for (int i=0;i<n;i++) {
            String res=solution(list[i]);
            System.out.println(res);
        }
    }

    static String solution(String str) {
       char[] chars = str.toCharArray();
        int n=chars.length;
        Deque<Character> deque=new LinkedList<>();
        int j=0;
        int pre=1;
        while (j<n) {
            int cnt=1;
            while (j+1<n&&chars[j+1]==chars[j]){
                cnt++;
                j++;
            }
            int sum=0;
            if (cnt>=2&&pre==1) {
                deque.offerLast(chars[j]);
                sum++;
            }
            deque.offerLast(chars[j]);
            sum++;
            pre=sum;
            j++;
        }
        StringBuilder sb=new StringBuilder();
        int size=deque.size();
        for (int i=0;i<size;i++){
            sb.append(deque.pollFirst());
        }
        return sb.toString();
    }
}