Python算法练习6.17

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,另一个数就是最大公约数

你可能感兴趣的:(算法练习,python,算法)