#1071. Greatest Common Divisor of Strings
For strings S and T, we say “T divides S” if and only if S = T + … + T (T concatenated with itself 1 or more times)
Return the largest string X such that X divides str1 and X divides str2.
这道题的意思是,字符串A和字符串B的最大公分串T(n个T可以组成A或B)是什么。
这道题的思路是,既然字符串A和字符串B都是由同一个字符串重复N次得到的,所以A和B拼接与B和A拼接应该相同。拼接相同判断后,结果一定出现在短的字符串中。然后用短字符串从n到0判断。
这里用到了split,split(x)会去掉x,以x为分割点返回数组。
/**
* @param {string} str1
* @param {string} str2
* @return {string}
*/
var gcdOfStrings = function(str1, str2) {
if((str1+str2) != (str2+str1)) {
return "";
}
let n = Math.min(str1.length,str2.length);
for(let i=n;i>=1;i--) {
let temp = str2.substring(0,i);
if(str2.split(temp).join("").length === 0 && str1.split(temp).join("").length === 0) {
return temp;
}
}
return "";
};