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

Commit 588369c

Browse files
python: add problem 93 and unittest
1 parent fa0062c commit 588369c

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

Python/sln_1_100/solution_91_100.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# -*- coding: utf-8 -*-
2+
from typing import List
3+
4+
5+
class Solution_91_100(object):
6+
def restoreIpAddresses(self, s: str) -> List[str]:
7+
"""
8+
93
9+
:param s:
10+
:return:
11+
"""
12+
results = []
13+
14+
def resolve_ip(segments, rest_s, last_num):
15+
if len(segments) == 4:
16+
if not rest_s:
17+
results.append('.'.join(segments))
18+
return
19+
elif len(segments) > 4:
20+
return
21+
if last_num is None:
22+
if not rest_s:
23+
return
24+
25+
segments.append(rest_s[0])
26+
elif not rest_s:
27+
return
28+
else:
29+
first_digit = int(rest_s[0])
30+
new_num = last_num * 10 + first_digit
31+
if new_num > 255 or segments[-1] == '0':
32+
segments.append(rest_s[0])
33+
else:
34+
# if first_digit < 3:
35+
new_segments = segments[::]
36+
new_segments.append(rest_s[0])
37+
resolve_ip(new_segments, rest_s[1:], first_digit)
38+
segments[-1] += rest_s[0]
39+
last_num = int(segments[-1])
40+
rest_s = rest_s[1:]
41+
resolve_ip(segments, rest_s, last_num)
42+
43+
resolve_ip([], s, None)
44+
45+
return results
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# -*- coding: utf-8 -*-
2+
from unittest import TestCase
3+
from sln_1_100.solution_91_100 import Solution_91_100
4+
5+
6+
class Test_Solution_91_100(TestCase):
7+
def setUp(self) -> None:
8+
self.sln = Solution_91_100()
9+
10+
def test_restoreIpAddresses(self):
11+
ret = self.sln.restoreIpAddresses("25525511135")
12+
self.assertEqual(ret, ['255.255.11.135', '255.255.111.35'])
13+
ret1 = self.sln.restoreIpAddresses("02525511135")
14+
# print(ret1)
15+
self.assertEqual(ret1, [])
16+
ret2 = self.sln.restoreIpAddresses("25025511135")
17+
self.assertEqual(ret2, ['250.255.11.135', '250.255.111.35'])
18+
self.assertEqual(self.sln.restoreIpAddresses("010010"), ["0.10.0.10", "0.100.1.0"])
19+
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"])
22+
s = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
23+
self.assertEqual(self.sln.restoreIpAddresses(s), [])
24+
# print(ret1)
25+
# self.assertEqual(ret, ['255.255.11.135', '255.255.111.35'])

0 commit comments

Comments
 (0)