Aula 06
C/C++ e Java
strings são representadas entre aspas duplas. Em Python
, pode-se usar aspas duplas e simples.
C/C++ ou Java
: "minha primeira string"Python
: "outra string" ou 'mais uma string'C/C++
caracteres são codificados usando o padrão ASCII. Em Java e Python
, utilizam o padrão UNICODE.
C
strings são representadas por arrays estáticos, terminados pelo caracter nulo '\0'
.
C:
// exemplo de string
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
// atalho para a inicialização
char greeting[] = "Hello";
C++
strings são representadas por arrays dinâmicos, com tamanho igual ao número de caracteres da string.
C++ - STL <string>:
// inclusão
#include <cstring>
using namespace std;
// exemplo de string
string greeting = "Hello";
Java
strings são representadas por arrays dinâmicos, com tamanho igual ao número de caracteres da string.
Java - String:
// exemplo de string
String greeting = "Hello";
Python
strings são representadas por arrays dinâmicos, com tamanho igual ao número de caracteres da string.
Python:
greeting1 = 'Hello'
greeting2 = "Hello"
As soluções de problemas de manipulação de strings exigem o domínio de operações como:
Exemplos de manipulação de strings em C
:
// inclusão
#include <cstring>
using namespace std;
// declaração
char str[] = "hello";
// tamanho
int s = strlen(str);
// cópia
char tmp[10];
strcpy(tmp, str);
// concatenação
char aux[10] = "world";
strcpy(aux, str);
// busca
char sub[] = "ll";
char *res = strstr(hello, sub);
// conversão string para int
char s1[] = "45";
int num = atoi(s1);
// conversão de int para string
int val = 368;
char s2[15];
sprintf(s2, "%d", val);
Exemplos de manipulação de strings em C++
:
// inclusão
#include <cstring>
using namespace std;
// declaração
string str = "hello";
// tamanho
int s = str.size();
// cópia
char tmp[10];
str.copy(tmp, 0, str.size());
// concatenação
string aux = "world";
str = str + aux;
// busca
string sub = "ll";
int res = str.find(sub);
// conversão string para int
string s1 = "45";
int num = stoi(s1);
// conversão de int para string
int val = 368;
string s2 = to_string(val);
Exemplos de manipulação de strings em Java
:
// declaração
String str = "hello";
// tamanho
int s = str.length();
// cópia
String tmp = new String(str);
// concatenação
string aux = "world";
str = str + aux;
// busca
String sub = "ll";
int res = str.indexOf(sub);
// conversão string para int
string s1 = "45";
int num = Integer.parseInt(s1);
// conversão de int para string
int val = 368;
string s2 = String.valueOf(val);
Exemplos de manipulação de strings em Python
:
# declaração
str = "hello";
# tamanho
s = len(str);
# cópia
tmp = str.copy(str);
# concatenação
aux = "world";
str = str + aux;
# busca
sub = "ll";
res = str.find(sub);
# conversão string para int
s1 = "45";
num = int(s1);
# conversão de int para string
val = 368;
s2 = str(val);
"acag$"
"acag$", "cag$", "ag$", "g$", "$"
.
A estrutura suffix trie pode ser utilizada em problemas que exigem:
A solução deste problema consiste em contar o número de nós da árvore que contém a substring de interesse.
Considerando o exemplo do slide anterior, a substring 'ca'
aparece apenas uma vez na string 'acag$'
e é representada na árvore apenas pelo nó marcado de vermelho.
A estrutura suffix trie pode ser utilizada em problemas que exigem:
A solução deste problema consiste em localizar o nó da árvore mais profundo e com mais de um filho.
Considerando o exemplo do slide anterior, a substring 'a'
aparece duas vez na string 'acag$'
e é representada na árvore apenas pelo nó marcado de verde.
Leitura:
Exercícios:
Aula 06