leetcode 1768 交替合并字符串
给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。
输入:word1 = "abc", word2 = "pqr"
输出:"apbqcr"
解释:字符串合并情况如下所示:
word1: a b c
word2: p q r
合并后: a p b q c r
class Solution(object):def mergeAlternately(self, word1, word2):strMerge = ''len1 = len(word1)len2 = len(word2)if(len1 >= len2):for i in range(0, len2):strMerge += (word1[i] + word2[i])strMerge += word1[len2:]else:for i in range(0, len1):strMerge += (word1[i] + word2[i])strMerge += word2[len1:]return strMerge
leetcode 1071 字符串的最大公因子
对于字符串 s 和 t,只有在 s = t + ... + t(t 自身连接 1 次或多次)时,我们才认定 “t 能除尽 s”。
给定两个字符串 str1 和 str2 。返回 最长字符串 x,要求满足 x 能除尽 str1 且 x 能除尽 str2 。
输入:str1 = "ABCABC", str2 = "ABC" 输出:"ABC"
输入:str1 = "ABABAB", str2 = "ABAB" 输出:"AB"
class Solution(object): def gcdOfStrings(self, str1, str2):def gcd(num1,num2):num1, num2 = max(num1, num2), min(num1, num2)x = num1 % num2while x!=0:num1 = num2num2 = xx = num1 % num2return num2reLen = gcd(len(str1), len(str2))reStr = str1[:reLen]if str1 + str2 == str2 + str1:return reStrreturn ''
辗转相除法:两个数a和b的最大公约数(a>b)等于a%b与min(a,b)的公约数,直到其中一个为0,另一个数就是最大公约数