Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเข้ารหัสสตริงตามความถี่ของอักขระใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับสตริง str เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เท่านั้น

ฟังก์ชันของเราควรสร้างสตริงใหม่ตามสตริงอินพุต โดยที่อักขระแต่ละตัวในสตริงใหม่คือ '(' หากอักขระนั้นปรากฏเพียงครั้งเดียวในสตริงดั้งเดิม หรือ ')' หากอักขระนั้นปรากฏมากกว่าหนึ่งครั้งในสตริงดั้งเดิม

และเราควรละเว้นทุน

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

ป้อนข้อมูล

const str = 'Success';

ผลผลิต

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

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

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));

ผลลัพธ์

)())())