Сегодня мой 62-й день кодинга. Я решил одну проблему на строку.

задача: посчитай и скажи

Последовательность подсчитай и скажи – это последовательность строк цифр, определяемая рекурсивной формулой:

  • countAndSay(1) = "1"
  • countAndSay(n) — это то, как вы «произносите» цифровую строку из countAndSay(n-1), которая затем преобразуется в другую цифровую строку.

Чтобы определить, как вы «произносите» строку цифр, разделите ее на минимальное количество подстрок, чтобы каждая подстрока содержала ровно одну уникальную цифру. Затем для каждой подстроки произнесите количество цифр, затем произнесите цифру. Наконец, соедините каждую указанную цифру.

Например, высказывание и преобразование для строки цифр "3322251":

Получив положительное целое число n, вернуть терминnthпоследовательности считай и скажи.

Пример 1:

Input: n = 1
Output: "1"
Explanation: This is the base case.

Пример 2:

Input: n = 4
Output: "1211"
Explanation:
countAndSay(1) = "1"
countAndSay(2) = say "1" = one 1 = "11"
countAndSay(3) = say "11" = two 1's = "21"
countAndSay(4) = say "21" = one 2 + one 1 = "12" + "11" = "1211"

Решение (в Java):

class Solution {
    public String countAndSay(int n) {
        String s="1";
        for(int i=1;i<n; i++){
            
               int count=1;
            char ch=s.charAt(0);
            StringBuilder sb= new StringBuilder();
            for(int j=1; j<s.length(); j++){
                if(s.charAt(j)==ch)
                count++;
                
                else
                {
                    sb.append(count);
                    sb.append(ch);
                    ch=s.charAt(j);
                    count=1;
                }
            }
            sb.append(count);
            sb.append(ch);
            s= sb.toString();
        }
        return s;
    }
}