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

ผลลัพธ์

)())())