Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Mã hóa chuỗi dựa trên tần suất ký tự trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi str làm đối số duy nhất. Hàm phải tạo một chuỗi mới dựa trên chuỗi đầu vào, trong đó mỗi ký tự trong chuỗi mới là '(' nếu ký tự đó chỉ xuất hiện một lần trong chuỗi gốc, hoặc ')' nếu ký tự đó xuất hiện nhiều hơn một lần. Chúng ta nên bỏ qua chữ hoa/thường.

Ví dụ, nếu đầu vào là:

Đầu vào

const str = 'Success';

Đầu ra

const output = ')())())';

Ví dụ

Dưới đây là mã thực hiện:

const str = 'Success';
const mapString = (str = '') => {
  const mainStr = str.toLowerCase();
  const hash = {};
  let res = '';
  for (let char of mainStr) {
    hash[char] = ~~hash[char] + 1;
  }
  for (let char of mainStr) {
    if (hash[char] > 1) {
      res += ')';
    } else {
      res += '(';
    }
  }
  return res;
};
console.log(mapString(str));

Kết quả

)())())