Viết hàm nhận vào một chuỗi có ít nhất một nguyên âm, trả về mảng số nguyên nơi mỗi phần tử là khoảng cách từ ký tự tại vị trí đó đến nguyên âm gần nhất.
Ví dụ
Chuỗi: 'vatghvf'
Nguyên âm ở vị trí 1 ('a'). Khoảng cách:
[1, 0, 1, 2, 3, 4, 5]
Giải pháp
Mã triển khai:
const str = 'vatghvf';
const nearest = (arr = [], el) => arr.reduce((acc, val) => Math.min(acc, Math.abs(val - el)), Infinity);
const vowelNearestDistance = (str = '') => {
const s = str.toLowerCase();
const vowelIndex = [];
// Tìm vị trí các nguyên âm
for (let i = 0; i < s.length; i++) {
if ('aeiou'.includes(s[i])) {
vowelIndex.push(i);
}
}
// Tính khoảng cách min đến nguyên âm cho mỗi ký tự
return s.split('').map((el, ind) => nearest(vowelIndex, ind));
};
console.log(vowelNearestDistance(str));
Kết quả
Đầu ra trong console:
[1, 0, 1, 2, 3, 4, 5]