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

Đếm số palindromes có thể được tạo từ một chuỗi trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một chuỗi ký tự làm đối số đầu tiên, ví dụ str và một số, ví dụ num, làm đối số thứ hai.

Hàm nên đếm số lượng các chuỗi palindrome có độ dài chính xác mà num có thể được cấu trúc từ chuỗi str đã cho. Sau đó, hàm cuối cùng sẽ trả về số lượng.

Ví dụ -

Nếu chuỗi đầu vào và số là -

const str = 'ij';
const num = 4;

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

const output = 4;

bởi vì bốn chuỗi palindrome có thể có là -

'iiii', 'jjjj', 'ijji', 'jiij'

Phương pháp tiếp cận:

Đầu tiên, chúng tôi sẽ đếm số lượng các ký tự duy nhất trong chuỗi đã cho bằng cách sử dụng một bộ băm. Nếu chiều dài của palindrome là một số lẻ, ký tự ở giữa có thể có u lựa chọn trong đó u là số ký tự duy nhất trong chuỗi.

Khi num là số chẵn, chúng ta sẽ có các khả năng sau -

power(u, num/2)

Và khi num là số lẻ, chúng ta cần nhân số này với u vì chúng ta có lựa chọn u cho vị trí đó.

Ví dụ

Sau đây là mã -

const str = 'ij';
const num = 4;
const findValidPalindromes = (str = '', num = 1) => {
   const set = new Set();
   for(let i = 0; i < str.length; i++){
      const el = str[i];
      set.add(el);
   };
   const u = set.size;
   if(num & 1){
      return Math.pow(u, num/2) * u;
   }else{
      return Math.pow(u, num/2);
   };
};
console.log(findValidPalindromes(str, num));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

4