แนวคิด
เหมือน GCD ของตัวเลข แต่สำหรับสตริง: หาสตริงย่อยที่ยาวที่สุดซ้ำได้ทั้งสองสตริง
ตัวอย่าง
const str1 = 'abcabc'; const str2 = 'abc';
GCD คือ 'abc'
โค้ดตัวอย่าง (Recursive)
const str1 = 'abcabc';
const str2 = 'abc';
const findGCD = (str1 = '', str2 = '') => {
if (str1 + str2 !== str2 + str1){
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