La technologie pour améliorer est un processus graduel, donc je parle des questions leetcode algorithme de niveau le plus simple a commencé à écrire, puis à la difficulté intermédiaire, a finalement terminé toute la difficulté difficile.
Actuellement, je choisi le langage C, Python et Java comme langage de mise en uvre, parce que ces trois langues est tout à fait typique. En raison de l'espace et de l'énergie limitée pour réaliser d'autres langues amis qui sont intéressés, s'il vous plaît essayer vous-même.
principale difficulté à parler en même temps, je vais ajouter d'autres choses, je pourrais parler à la pile de protocole du système d'exploitation de grandes quantités de données distribués à partir du cadre, et de parler de gros volumes de données à l'intelligence artificielle, ... ....
Si vous avez des questions ou des commentaires après l'article lettre privée à moi .
Je continuerai à le partager, votre attention s'il vous plaît.
LeetCode 387. La première chaîne un caractère unique (premier caractère unique dans une chaîne)
Description du problème:
D'une chaîne, trouver ses premiers caractères de non-répétition, et retourne son index. Dans le cas contraire, elle renvoie -1.
Note: Vous pouvez supposer que la chaîne contient des lettres minuscules seulement.
exemple:
langage C:
Le premier réflexe est de traverser la chaîne entière, compter le nombre de fois que chaque lettre apparaît, puis itérer pour trouver la première fois la chaîne de lettres apparaissent SUBSCRIPT. La complexité de cet algorithme est O (n), pendant deux cycles à exécuter.
Mais je veux résoudre ce problème en un seul cycle. J'ai découvert qu'en fait, nous pouvons utiliser une méthode précédemment utilisée, nous pouvons trouver des deux côtés en même temps une série de 26 lettres chaque lettre dans la position de la chaîne et de gauche à droite, donc il y a trois cas:
Code est la suivante:
Nous utilisons les fonctions intégrées et strrchr strchr respectivement de gauche et à droite pour trouver chaque lettre, la fonction renvoie un pointeur, alors la différence entre le pointeur et le descripteur s est retourné.
la mise en uvre de python de la langue:
C mise en uvre cohérente et la réalisation du python.
Code est la suivante:
Java implémentation du langage:
Java et le langage C pour obtenir essentiellement les mêmes.
Code est la suivante: