虽然这里的许多答案都是 O(n^2),但我尝试使用递归在 O(n) 时间内完成。这是从我已经拥有的现有代码中修改的,所以我知道该方法返回一个 int,但我不使用它(它是从复制的代码中遗留下来的 - 按照你认为合适的方式修复它)
public class CountCharSeqRecursive {
    private String test = "AAABBA";  // (3)A(2)B(1)A
    private StringBuilder runningString = new StringBuilder();
    public static void main(String[] args) {
       CountCharSeqRecursive t = new CountCharSeqRecursive();
       System.out.println(t.getEncryptedValue(t.test));
    }
    public String getEncryptedValue(String seq){
        int startIndex=0;
        this.createCounterSeq(seq.charAt(startIndex), seq, startIndex);
        return runningString.toString();
    }
    private int createCounterSeq(char prev, String sequence, int currentIndex){
       return createCounterSeq(prev, sequence, currentIndex, 0);
    }
    private int createCounterSeq(char prev, String sequence, int currentIndex, int count){
        if(currentIndex<sequence.length()){
            char current = sequence.charAt(currentIndex);
          if((prev^current) < 1){
               ++count;
           }else {
                this.addToSequence(count, prev);
                count = 1;
            }
            return count += createCounterSeq(current, sequence, ++currentIndex, count);
        }
        this.addToSequence(count, prev);
        return count;
    }
    private void addToSequence(int count, char ch){
        runningString.append("("+count+")").append(ch);
    }
 }