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

回答編集履歴

3

コード修正

2018/04/08 10:03

投稿

arch_
arch_

スコア158

answer CHANGED
@@ -10,13 +10,11 @@
10
10
  ``` python
11
11
  def checkio(text):
12
12
  abc = 'abcdefghijklmnopqrstuvwxyz'
13
- # 解析したいtextを小文字abc順にcount
14
13
  text_lower = text.lower()
15
14
  counts = [text_lower.count(c) for c in abc]
16
- # 最頻値のindexの文字を返す
17
15
  return abc[counts.index(max(counts))]
18
16
 
19
-
17
+ '''
20
18
  # --- TEST ---
21
19
  print('\n'.join(map(str, [
22
20
  checkio("Hello World!") == "l",
@@ -29,11 +27,27 @@
29
27
  ])))
30
28
  '''
31
29
  import random
30
+ import string
32
31
  import time
32
+
33
+
33
- abc = 'abcdefghijklmnopqrstuvwxyz'
34
+ def check_solve_time(N=1):
34
- random_text = ''.join(random.choice(abc) for _ in range(10 ** 6))
35
+ random_text = ''.join(random.choices(string.ascii_letters, k=10 ** N))
35
- start = time.time()
36
+ start = time.time()
36
- print(checkio(random_text))
37
+ checkio(random_text)
38
+ elapsed_time = time.time() - start
39
+ return 'O(10 ** {}): {:.8f}sec'.format(N, elapsed_time)
40
+
37
- print('{}sec'.format(time.time() - start))
41
+ print('\n'.join(map(check_solve_time, range(1, 9))))
42
+ ''' output
43
+
44
+ O(10 ** 1): 0.00002789sec
45
+ O(10 ** 2): 0.00002408sec
46
+ O(10 ** 3): 0.00008702sec
47
+ O(10 ** 4): 0.00072193sec
48
+ O(10 ** 5): 0.00718522sec
49
+ O(10 ** 6): 0.07049918sec
50
+ O(10 ** 7): 0.72828794sec
51
+ O(10 ** 8): 7.26664400sec
38
52
  '''
39
53
  ```

2

コード修正

2018/04/08 10:03

投稿

arch_
arch_

スコア158

answer CHANGED
@@ -30,7 +30,8 @@
30
30
  '''
31
31
  import random
32
32
  import time
33
+ abc = 'abcdefghijklmnopqrstuvwxyz'
33
- random_text = ''.join(random.choice(alphabets) for _ in range(10 ** 6))
34
+ random_text = ''.join(random.choice(abc) for _ in range(10 ** 6))
34
35
  start = time.time()
35
36
  print(checkio(random_text))
36
37
  print('{}sec'.format(time.time() - start))

1

追記

2018/04/08 07:30

投稿

arch_
arch_

スコア158

answer CHANGED
@@ -1,3 +1,7 @@
1
+ 別解として、参考にしてください。
2
+
3
+ --
4
+
1
5
  命題に対してcollectionsのCounterだと思うように効果を発揮しないように感じます。
2
6
 
3
7
  私なら以下のように解きます。