字符串的最大公因子
对于字符串 s 和 t,只有在 s = t + t + t + … + t + t(t 自身连接 1 次或多次)时,我们才认定 “t 能除尽 s”。
给定两个字符串 str1 和 str2 。返回 最长字符串 x,要求满足 x 能除尽 str1 且 x 能除尽 str2 。
输入:str1 = “ABCABC”, str2 = “ABC”
输出:”ABC”
输入:str1 = “ABABAB”, str2 = “ABAB”
输出:”AB”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| var gcdOfStrings = function(str1, str2) { const m=str1.length; const n=str2.length; let t=''; let j=1; let maxlen=0; let str=str1; let min=n if(m<n) { str=str2; min=m } for(;j<=str.length;j++) { if(str[j]===str[0]) { let pat=str.substring(0,j); if(j===min-1) pat=str.substring(0,j+1); const len=pat.length; if((m%len!==0)||(n%len!==0)) continue; const x=m/len; const y=n/len; if(str1===pat.repeat(x)&&str2===pat.repeat(y)) { const r=gcd(Math.max(x,y),Math.min(x,y)) t=pat.repeat(r); break } } } function gcd(m,n) { if(m%n===0) return n return gcd(n,m%n) } return t };
|