string.length calcula o comprimento ao chamar string.length [duplicado]

Sep 20 2020

Recentemente, descobri que a complexidade de tempo para string.length em javascript é 0 (1). há alguém que possa me fazer entender por que, para obter o comprimento, precisamos percorrer todos os caracteres e se a string tem n caracteres, então deve depender de n e deve custar 0 (n).

Eu realmente apreciaria se alguém pudesse limpar isso ou enviar um link para a implementação nativa de string.length

Desde já, obrigado :-)

Respostas

NonameLover Sep 20 2020 at 01:25

String é uma classe. Uma classe pode ter variáveis ​​e funções de membro. Quando você cria uma string, a variável de membro de comprimento provavelmente é definida. Provavelmente existe uma função "oculta" que executa O (n) para a inicialização da string, mas uma vez que o comprimento é definido, o computador precisa apenas acessar o valor, então O (1). Tudo isso está predefinido e o programador só precisa saber como usar a função.

2 ssilas777 Sep 20 2020 at 01:26

Isso ocorre porque a string é imutável, então o comprimento é calculado quando a string é criada e nunca será alterada.

Quando uma string é modificada, um novo objeto string é criado e, portanto, o comprimento.

Portanto, a duração é um tempo constante O(1).