ในระบบตัวเลข ตัวหารร่วมที่ยิ่งใหญ่ที่สุด (GCD) ของตัวเลขสองตัวคือจำนวนที่มากที่สุดที่หารตัวเลขทั้งสองตัว ในทำนองเดียวกัน หากเราใช้แนวคิดนี้กับสตริง gcd ของสองสตริงจะเป็นสตริงย่อยที่ยิ่งใหญ่ที่สุด (ความยาวมากที่สุด) ที่มีอยู่ในทั้งสองสตริง
ตัวอย่างเช่น −
หากทั้งสองสตริงคือ −
const str1 = 'abcabc'; const str2 = 'abc';
จากนั้น gcd ของสตริงเหล่านี้จะเป็น −
const gcd = 'abc';
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับสองสตริง str1 และ str2 และคำนวณและส่งคืน gcd ของพวกมัน
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const str1 = 'abcabc';
const str2 = 'abc';
const findGCD = (str1 = '', str2 = '') => {
if (str1 + str2 !== str2 + str1){
// not possible
// no common element
return "";
} else if (str1 == str2){
return str1;
} else if (str1.length > str2.length){
return findGCD(str1.slice(str2.length), str2);
} else {
return findGCD(str2.slice(str1.length), str1);
}
};
console.log(findGCD(str1, str2)); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
abc