剑指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)

浙公网安备 33010602011771号