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

Thay thế lần xuất hiện thứ n của ký tự - JavaScript

Viết hàm nhận chuỗi, số n và ký tự c. Thay thế lần xuất hiện thứ n của mỗi ký tự bằng c.

Ví dụ

Chuỗi: 'This is a sample string', n = 2, c = '*'

Lần xuất hiện thứ 2 của mỗi ký tự sẽ được thay bằng *.

Giải pháp

Mã triển khai (theo dõi tần suất từng ký tự):

const str = 'This is a sample string';
const num = 2;
const char = '*';

const replaceNthAppearance = (str, num, char) => {
  return str.split('').reduce((acc, val, ind, arr) => {
    let { res, map } = acc;
    if (!map.has(val)) {
      map.set(val, 1);
      res += (num === 1 ? char : val); // Nếu n=1 thì thay lần đầu
    } else {
      const freq = map.get(val);
      res += (freq + 1 === num ? char : val);
      map.set(val, freq + 1);
    }
    return { res, map };
  }, { res: '', map: new Map() }).res;
};

console.log(replaceNthAppearance(str, num, char));

Kết quả

Đầu ra trong console:

This ***a s*mple string

Giải thích: Mỗi ký tự được đếm riêng. Lần xuất hiện thứ 2 của 'i', 's', ' ', 'a', 'p', 'l', 'e', 't', 'r', 'n', 'g' bị thay bằng '*'.