Skip to main content

1915. Number of Wonderful Substrings

Đề bài :

Một chuỗi Wonderful là một chuỗi trong đó có nhiều nhất một chữ cái xuất hiện với số lần lẻ. Cho một từ chuỗi bao gồm mười chữ cái tiếng Anh viết thường đầu tiên ('a' đến 'j'), trả về số lần xuất hiện chuỗi wonderful non-empty substring trong word Nếu cùng một chuỗi con xuất hiện nhiều lần trong word thì hãy đếm riêng từng lần xuất hiện.

Chuỗi con là một chuỗi ký tự liền kề nhau trong một chuỗi.

Ví dụ :

Nếu ccjjcabab,là chuỗi tuyệt vời còn ab thì không phải

Example 1:

Input: word = "aba" Output: 4 Explanation: The four wonderful substrings are underlined below:

- "**a**ba" -> "a"

- "a**b**a" -> "b"

- "ab**a**" -> "a"

- "aba" -> "aba"

Example 2:

Input: word = "aabb" Output: 9 Explanation: The nine wonderful substrings are underlined below:

- "**a**abb" -> "a"

- "**aa**bb" -> "aa"

- "**aab**b" -> "aab"

- "aabb" -> "aabb"

- "a**a**bb" -> "a"

- "a**abb**" -> "abb"

- "aa**b**b" -> "b"

- "aa**bb**" -> "bb"

- "aab**b**" -> "b"

Example 3:

Input: word = "he" Output: 2 Explanation: The two wonderful substrings are underlined below: - "he" -> "h" - "he" -> "e"

Constraints:

  • 1 <= word.length <= 10``5
  • word consists of lowercase English letters from 'a' to 'j'.

Bài giải :

/**
 * @param {string} word
 * @return {number}
 */
var wonderfulSubstrings = function (word) {};

Giải thích code:

Thuật toán này có độ phức tạp là 0(n) Độ phức tạp về không gian là O(n)

1. đầu tiên chúng ta sử dụng hàm indexOf một method của string để tìm vị trí xuất hiện của chuỗi ch trong word 2. Kiểm tra nếu index < 0 tức là chuỗi ch không xuất hiện trong word 3. Tiếp theo tạo 1 biến là revertString để lưu lại dãy cần revert 4. Tạo vòng for chạy từ index đến 0 và cộng ký tự vào chuỗi này 5. Trả về chuỗi revertString cộng với dãy word cắt từ vị trí index trở đi đến cuối cùng