Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 01e6b8b

Browse files
python: add problem 91 and unittest
1 parent 5f65f4e commit 01e6b8b

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

Python/sln_1_100/solution_91_100.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,26 @@
33

44

55
class Solution_91_100(object):
6+
def numDecodings(self, s: str) -> int:
7+
"""
8+
91
9+
:param s:
10+
:return:
11+
"""
12+
prefix2num = {}
13+
for i in range(len(s)):
14+
candidate = s[:i + 1]
15+
prefix1 = candidate[:-1]
16+
prefix2 = candidate[:-2]
17+
count = 0
18+
if int(candidate[-1]) > 0:
19+
count += prefix2num.get(prefix1, 1)
20+
if 10 <= int(candidate[-2:]) <= 26:
21+
count += prefix2num.get(prefix2, 1)
22+
if candidate:
23+
prefix2num[candidate] = count
24+
return prefix2num[s]
25+
626
def restoreIpAddresses(self, s: str) -> List[str]:
727
"""
828
93

Python/sln_1_100/test_solution_91_100.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ class Test_Solution_91_100(TestCase):
77
def setUp(self) -> None:
88
self.sln = Solution_91_100()
99

10+
def test_numDecodings(self):
11+
self.assertEqual(self.sln.numDecodings("0"), 0)
12+
self.assertEqual(self.sln.numDecodings("00"), 0)
13+
self.assertEqual(self.sln.numDecodings("1"), 1)
14+
self.assertEqual(self.sln.numDecodings("10"), 1)
15+
self.assertEqual(self.sln.numDecodings("12"), 2)
16+
self.assertEqual(self.sln.numDecodings("226"), 3)
17+
1018
def test_restoreIpAddresses(self):
1119
ret = self.sln.restoreIpAddresses("25525511135")
1220
self.assertEqual(ret, ['255.255.11.135', '255.255.111.35'])
@@ -17,8 +25,10 @@ def test_restoreIpAddresses(self):
1725
self.assertEqual(ret2, ['250.255.11.135', '250.255.111.35'])
1826
self.assertEqual(self.sln.restoreIpAddresses("010010"), ["0.10.0.10", "0.100.1.0"])
1927
self.assertEqual(self.sln.restoreIpAddresses('0000'), ["0.0.0.0"])
20-
self.assertEqual(self.sln.restoreIpAddresses("101023"), ["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"])
21-
self.assertEqual(self.sln.restoreIpAddresses("9999999"), ["9.99.99.99","99.9.99.99","99.99.9.99","99.99.99.9"])
28+
self.assertEqual(self.sln.restoreIpAddresses("101023"),
29+
["1.0.10.23", "1.0.102.3", "10.1.0.23", "10.10.2.3", "101.0.2.3"])
30+
self.assertEqual(self.sln.restoreIpAddresses("9999999"),
31+
["9.99.99.99", "99.9.99.99", "99.99.9.99", "99.99.99.9"])
2232
s = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
2333
self.assertEqual(self.sln.restoreIpAddresses(s), [])
2434
# print(ret1)

0 commit comments

Comments
 (0)