剣指Offer(Pythonの多種の構想の実現):数字を文字列に翻訳する
1390 ワード
面接46題:
数字を文字列に訳す
标题:1つの数字を与えて、私达は以下の规则によってそれを文字列に訳します:0は“a”に訳して、1は“b”に訳して、......,11は“1”に訳して、......,25は“z”に訳します.1つの数字に複数の翻訳がある可能性があります.例えば、12258には5つの異なる翻訳があり、それぞれ「bccfi」、「bwfi」、「bczi」、「mcfi」、「mzi」である.プログラミングして1つの関数を実現して、1つの数字がどれだけ異なる翻訳方法があるかを計算してください.
問題を解く考え方1:
問題を解く構想2:
数字を文字列に訳す
标题:1つの数字を与えて、私达は以下の规则によってそれを文字列に訳します:0は“a”に訳して、1は“b”に訳して、......,11は“1”に訳して、......,25は“z”に訳します.1つの数字に複数の翻訳がある可能性があります.例えば、12258には5つの異なる翻訳があり、それぞれ「bccfi」、「bwfi」、「bczi」、「mcfi」、「mzi」である.プログラミングして1つの関数を実現して、1つの数字がどれだけ異なる翻訳方法があるかを計算してください.
問題を解く考え方1:
class Solution:
def getTranslationCount(self, number):
"""
:type number: int
:rtype: int
"""
if number<0:
return 0
numberStr=str(number)
return self.getTranslateCount(numberStr)
def getTranslateCount(self,numberStr):
length=len(numberStr)
counts=[0]*length
#count=0
for i in range(length-1,-1,-1):
count=0
if i =10 and converted<=25:
if i
問題を解く構想2:
def numDecodings(self, s: str) -> int:
# w tells the number of ways
# v tells the previous number of ways
# d is the current digit
# p is the previous digit
v, w, p = 0, int(s>''), ''
for d in s:
v, w, p = w, int(d>'0')*w + (9