8.15 - hard - 52

282. Expression Add Operators

一道比较标准的backtracking的题目,不过中间的case有点多,没写出来

class Solution(object):
    def addOperators(self, num, target):
        """
        :type num: str
        :type target: int
        :rtype: List[str]
        """
        if not num: return []
        paths = []
        self.recur(paths,'',num,target,0,0,0)
        return paths

    def recur(self,paths,path,num,target,eva,pos,multed):
        if pos == len(num) and eva == target:
            paths.append(path)
            return
        for i in range(pos,len(num)):
            if num[pos] == '0' and i > pos: break
            cur = int(num[pos:i+1])
            if pos == 0:
                self.recur(paths,path+str(cur),num,target,eva+cur,i+1,eva+cur)
            else:
                self.recur(paths,path+'+'+str(cur),num,target,eva+cur,i+1,cur)
                self.recur(paths,path+'-'+str(cur),num,target,eva-cur,i+1,-cur)
                self.recur(paths,path+'*'+str(cur),num,target,eva+multed*(cur-1),i+1,multed*cur)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容