Computer >> Máy Tính >  >> Lập trình >> Javascript

Chuỗi con duy nhất trong chuỗi tròn trong JavaScript

Vấn đề

Giả sử chúng ta có một S, str. là một chuỗi bao bọc vô hạn của chuỗi -

"abcdefghijklmnopqrstuvwxyz".

Do đó, S sẽ giống như thế này -

"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".

Chúng tôi bắt buộc phải viết một hàm JavaScript có trong str, hãy gọi chuỗi đó là str, làm đối số duy nhất.

  • Hàm của chúng ta sẽ tìm ra có bao nhiêu chuỗi con không trống duy nhất của str có trong S.

  • Hàm của chúng ta cuối cùng sẽ trả về số lượng các chuỗi con không trống khác nhau của str trong chuỗi S.

Ví dụ:nếu đầu vào của hàm là -

const str = "zab";

Sau đó, đầu ra phải là -

const output = 6;

Giải thích đầu ra

Có sáu chuỗi con "z", "a", "b", "za", "ab", "zab" của chuỗi "zab" trong chuỗi S.

Ví dụ

Mã cho điều này sẽ là -

const str = "zab";
const allSubstrings = (str = '') => {
   const dp = new Array(26).fill(0);
   dp[str.charCodeAt(0) - 97] = 1;
   maxCount = 1;
   for (let i = 1; i < str.length; i++) {
      if ((str.charCodeAt(i) - str.charCodeAt(i - 1) == 1) || (str.charCodeAt(i) - str.charCodeAt(i - 1) == -25)) {
         maxCount++;
      } else {
         maxCount = 1;
      }
      dp[str.charCodeAt(i) - 97] = Math.max(dp[str.charCodeAt(i) - 97], maxCount);
   }
   return dp.reduce((item, val) => {
      return val + item;
   })
};
console.log(allSubstrings(str));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

6