今天面试官给出了一道原创题,判断字符串s是否能够由arr中的元素组合拼接组成。
输入示例:
s="aabbcc"
arr=["a","abb","c"]
其实还挺简单的递归法的题目,太紧张然后写错边界条件。
递归法两个注意点:
1.字符串的边界条件
2.遍历过程中只要有一次true,最后结果就是true
时间复杂度:O(n)
空间复杂度:O(1)
代码如下:
class Solution(object):
    def mergeStr(self,s,arr):
        if len(s)==0:
            return True
        start=0
        flag=False
        for i in range(1,len(s)+1):
            cur=s[start:i]
            if cur in arr:
                flag=self.mergeStr(s[i:],arr)
        return flag
if __name__=='__main__':
    s="aabbcc"
    arr=["a","abb","cc"]
    solution=Solution()
    res=solution.mergeStr(s,arr)
    print(res)其实和找零钱挺像的,但是太紧张了。边界条件其实面试时发现错了,i属于[1,len(s)+1),但面试官小姐姐一质疑就不敢改了。交流还是很重要。










