Slides da aula 3

Propaganda
24/03/2015
Desafios de Programação
TCC-00.254 | Turma A-1
Conteúdo
Manipulação de Strings
Professor Leandro Augusto Frata Fernandes
[email protected]
Material disponível em
http://www.ic.uff.br/~laffernandes/teaching/2015.1/tcc-00.254
Leitura Sugerida
•
•
•
Competitive Programming 2
HALIM, S.; HALIM, F. Lulu: 2012
Capítulo 6
Competitive Programming 3
HALIM, S.; HALIM, F. Lulu: 2013
Capítulo 6
Programming Challenges
SKIENA, S.S.; REVILÇA, M.A. Springer: 2003
Capítulo 3
TCC-00.254 Desafios de Programação
2
1
24/03/2015
Codificação de Caracteres
•
Mapeamento entre números e símbolos que fazem
parte de um alfabeto particular
•
Exemplos de codificações
ASCII
Focar neste
o 2 = 128 caracteres, 8 bits
Tipo primitivo
char em C/C++
UTF-8
o 2 = 256 caracteres, 8 bits
UNICODE
o2
= 65.536 caracteres, 16 bits
Tipo primitivo
char em Java
TCC-00.254 Desafios de Programação
3
Representação de Strings
•
Opções
Arrays terminados por caractere nulo (‘\0’)
o char[] em C/C++
Arrays associados ao tamanho do string
o java.lang.String em Java, std::string em C++
Lista encadeada de caracteres
Árvore de prefixos (trie) para várias strings
•
Impactos a serem considerados
Uma trie para as entradas
"A", "to", "tea", "ted", "ten", "i",
"in" e "inn" (Fonte: Wikipedia)
Uso e organização de memória
Consulta de tamanho
Tempo de acesso constante ao -ésimo caractere
Acesso eficiente a um -ésimo caractere existente
Exclusão e inclusão eficiente de caracteres
TCC-00.254 Desafios de Programação
4
2
24/03/2015
Operações Comuns
•
•
•
•
Consulta de tamanho
Cópia
Reversão
Busca por padrão
Dado um string A, identificar quando este contém o substring B
Como fazer? Como lidar com sensibilidade ao caso?
•
•
Conversão de/para tipos numéricos
Expressões regulares
Java leva vantagem!
TCC-00.254 Desafios de Programação
5
Bibliotecas Nativas
C (char[])
•
C++
•
Header <string.h>
strlen
std::string
size, empty
strcpy
c_str
strcat
operator []
strcmp
append, insert, replace
strchr, strstr
erase
sscanf, sprintf
•
find, rfind
Header <stdlib.h>
first, last
atof, atoi, strtod, etc.
•
compare
Header <ctype.h>
tolower, toupper, islower,
isupper, isalpha, etc.
•
std::stringstream
TCC-00.254 Desafios de Programação
6
3
24/03/2015
Bibliotecas Nativas
Java
• java.lang.String
•
java.lang.Double e outras
length, isEmpty
toString(int i)
charAt
parseDbl(String s)
concat, replace, reclaceAll
•
compareTo,
compareToIgnoreCase
trim
toUpperCase, toLowerCase
valueOf
java.lang.Integer
toString(int i, int radix)
parseInt(String s, int radix)
•
java.lang.StringBuilder
•
java.io.StringReader
•
Pacote java.util.regex
TCC-00.254 Desafios de Programação
7
4
Download