/
python_exemplos.py
76 lines (49 loc) · 1.79 KB
/
python_exemplos.py
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
65
66
67
68
69
70
71
72
73
74
75
76
from random import randint
from time import time
def caracter_mais_frequente(texto):
"""Retorna o caracter que aparece com maior frequencia no texto
informado, e o numero de vezes que ele aparece.
Note que a complexidade desse algoritmo eh quadratica no tamanho do texto,
pois para cada caracter, o texto inteiro precisa ser percorrido.
"""
maxcont = 0
maxcaracter = None
for caracter in texto:
cont = 0
for i in range(len(texto)):
if texto[i] == caracter:
cont += 1
if cont > maxcont:
maxcont = cont
maxcaracter = caracter
return maxcaracter, maxcont
def caracter_mais_frequente_usando_dicionarios(texto):
"""Retorna o caracter que aparece com maior frequencia no texto
informado, e o numero de vezes que ele aparece.
Note que o texto eh percorrido apenas uma vez.
A cada caracter lido, um contador eh localizado no dicionario (hash map)
em tempo constante e eh entao incrementado (ou inserido com valor 1,
caso seja a primeira vez que aquele caracter eh encontrado).
"""
contadores = {}
for caracter in texto:
cont = contadores.get(caracter, 0)
cont += 1
contadores[caracter] = cont
maxcont = 0
maxcaracter = None
for caracter in contadores:
if contadores[caracter] > maxcont:
maxcont = contadores[caracter]
maxcaracter = caracter
return maxcaracter, maxcont
# main
texto = []
for _ in range(5000):
texto += [randint(1, 100)]
inicio = time()
caracter_mais_frequente(texto)
print("%.5f segundos" % (time() - inicio))
inicio = time()
caracter_mais_frequente_usando_dicionarios(texto)
print("%.5f segundos" % (time() - inicio))