Trong hệ thống số, ước chung lớn nhất (GCD) của hai số là số lớn nhất chia hết cả hai. Áp dụng khái niệm này cho chuỗi, GCD của hai chuỗi là chuỗi con dài nhất (theo độ dài) xuất hiện trong cả hai chuỗi.
Ví dụ:
Nếu hai chuỗi là:
const str1 = 'abcabc'; const str2 = 'abc';
GCD của chúng sẽ là:
const gcd = 'abc';
Cần viết hàm JavaScript nhận vào hai chuỗi str1, str2 và tính trả về GCD của chúng.
Ví dụ
Mã thực hiện:
const str1 = 'abcabc'; const str2 = 'abc'; const findGCD = (str1 = '', str2 = '') => { if (str1 + str2 !== str2 + str1){ // không thể // không có phần tử chung 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));
Kết quả
Kết quả in ra console:
abc