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 % num2
while x!=0:
num1 = num2
num2 = x
x = num1 % num2
return num2
reLen = gcd(len(str1), len(str2))
reStr = str1[:reLen]
if str1 + str2 == str2 + str1:
return reStr
return ''
辗转相除法:两个数a和b的最大公约数(a>b)等于a%b与min(a,b)的公约数,直到其中一个为0,另一个数就是最大公约数