剑指offer46 把数字翻译成字符串

又是一道书上没有的题。

相对简单,就用递归做。

dfs(int[] count,index){

if(index==input.length) count[0]++;

dfs(count,index+1);

若果可以dfs(count,index+2);

}

如果需要记录结果,搞一个ArrayList<String> ans

dfs(ans,StringBuilder sb,index)

然后如果到尾了,ans add一下

没到位,就往sb里加对应翻译结果字符就可以了。

记得递归返回时把sb里东西清掉就行。

 

class Solution(object):
    def translation(self,num):
        num_str = str(num)
        digit = len(num_str)
        ans = [0]
        self.helper(num_str,0,ans)
        return ans

    def helper(self,num_str,index,ans):
        if index==len(num_str):
            ans[0]+=1
            return
        self.helper(num_str,index+1,ans)
        if index+1<=len(num_str)-1 and int(num_str[index:index+2])<26:
            print int(num_str[index:index+2])
            self.helper(num_str,index+2,ans)


if __name__ == '__main__':
    solu = Solution()
    print solu.translation(12258)
    print solu.translation(12)

 

posted @ 2019-02-28 16:59  大胖子球花  阅读(157)  评论(0)    收藏  举报