-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreorganizeString.py
More file actions
64 lines (51 loc) · 1.61 KB
/
reorganizeString.py
File metadata and controls
64 lines (51 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# -*- encoding: utf-8 -*-
'''
@project : LeetCode
@File : reorganizeString.py
@Contact : 9824373@qq.com
@Desc :
@Modify Time @Author @Version @Desciption
------------ ------- -------- -----------
2020-03-01 zhan 1.0 None
'''
class Solution:
def reorganizeString(self, S: str) -> str:
charSet = {}
if len(S) <= 1: return S
maxCount = 0
maxCount_char = ''
for char in S:
charSet.setdefault(char,0)
charSet[char] += 1
if charSet[char] > (len(S)-1)// 2 + 1: return ''
if maxCount < charSet[char]:
maxCount = charSet[char]
maxCount_char = char
s_s = maxCount_char * charSet[maxCount_char]
for char in charSet:
if char != maxCount_char:
s_s += char * charSet[char]
ans = [' ']* len(s_s)
ans[::2], ans[1::2] = s_s[:(len(ans)+1)//2], s_s[(len(ans)+1)//2:],
ans = ''.join(ans)
return ans
# gap = (len(S)+1) // maxCount
#
# ans = [maxCount_char if i%gap==0 else ' ' for i in range(len(S))]
# ans = ''
# # while len(ans) < len(S):
# for char in charSet:
# ans += [char] * charSet[char] * 2
# i = 1
#
# if charSet[char] > 0:
# ans += char
# charSet[char] -= 1
return ans
if __name__ == '__main__':
S = "aab"
# S = "aaab"
# S = 'aaabc'
# SS = { char:1 for char in S}
ans = Solution().reorganizeString(S)
print(ans)