teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コード修正

2018/04/08 02:14

投稿

arch_
arch_

スコア158

answer CHANGED
@@ -18,10 +18,13 @@
18
18
  src = [0.1,0.5,0.03,-0.19,-0.05,0.1,0.5,-0.2]
19
19
 
20
20
  src_t = ''.join(map(lambda x: 'ab'[x < 0], src))
21
- count = list(map(len, sorted(re.findall('a+|b+', src_t))))
21
+ groups = re.findall('a+|b+', src_t)
22
22
 
23
- seq_minus = count[-1]
24
- seq_plus = max(count[:-1])
23
+ def seq_len_max(groups, s):
24
+ return len(max(filter(lambda x: s in x, groups), key=len))
25
25
 
26
+ seq_plus = seq_len_max(groups, 'a')
27
+ seq_minus = seq_len_max(groups, 'b')
28
+
26
29
  print(seq_plus, seq_minus)
27
30
  ```

1

文章修正

2018/04/08 02:14

投稿

arch_
arch_

スコア158

answer CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  この整形した文字列に対して、正規表現モジュールreのパターンマッチング(a+|b+)で連続した文字列を全て取り出します。
12
12
  これをsortすることで連続したaの文字列のグループ、連続したbの文字列のグループに分割することができます(実際には1つのリスト)。
13
- 後は、リストのラストが負の数の最大連続数、それを除いた残りのリストの最大連続数が正の数になります。
13
+ 後は、リストのラストが負の数の最大連続数、それを除いた残りのリストの最大が正の数の最大連続数になります。
14
14
 
15
15
  ``` python
16
16
  import re