string.length calcula o comprimento ao chamar string.length [duplicado]
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
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.
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).