Il semble que des tests de codage soient menés à l'étranger lors d'entretiens d'ingénieurs, et dans de nombreux cas, l'essentiel est de mettre en œuvre des fonctions et des classes spécifiques en fonction du thème.
En guise de contre-mesure, il semble qu'un site appelé Let Code prendra des mesures.
Un site qui forme une puissance algorithmique capable de résister à des tests de codage dont on parle très tôt.
Je pense qu'il vaut mieux avoir la puissance de l'algorithme d'un être humain, donc je vais résoudre le problème de manière irrégulière et écrire la méthode que j'ai pensé à ce moment-là sous forme de mémo.
En gros, je voudrais résoudre l'acceptation facile par ordre décroissant.
Dernière fois Leet Code Day1 à partir de zéro "1389. Créer un tableau cible dans l'ordre indiqué"
Input: address = "1.1.1.1" Output: "1[.]1[.]1[.]1"
Input: address = "255.100.50.0" Output: "255[.]100[.]50[.]0"
Remplacez simplement le. Dans l'adresse IP donnée par [.].
class Solution:
def defangIPaddr(self, address: str) -> str:
address = address.replace('.','[.]')
return address
# Runtime: 24 ms, faster than 88.37% of Python3 online submissions for Defanging an IP Address.
# Memory Usage: 14 MB, less than 100.00% of Python3 online submissions for Defanging an IP Address.
Utilisez simplement replace () et vous avez terminé!
Je réfléchissais, mais n'est-il pas plus rapide de revenir directement sans affecter l'adresse en premier lieu? Je pense et je le réécris.
class Solution:
def defangIPaddr(self, address: str) -> str:
return address.replace('.','[.]')
# Runtime: 24 ms, faster than 88.37% of Python3 online submissions for Defanging an IP Address.
# Memory Usage: 13.7 MB, less than 100.00% of Python3 online submissions for Defanging an IP Address.
Il n'a utilisé qu'un peu moins de mémoire.
Si vous jetez un coup d'œil à Discuss, c'est un autre problème majeur. Utilisez la fonction de fractionnement pour l'assigner à la liste, puis utilisez la fonction de jointure pour insérer `` [.] '' Entre les nombres.
class Solution:
def defangIPaddr(self, address: str) -> str:
return "[.]".join(address.split("."))
# Runtime: 28 ms, faster than 65.40% of Python3 online submissions for Defanging an IP Address.
# Memory Usage: 13.7 MB, less than 100.00% of Python3 online submissions for Defanging an IP Address.
À propos, la fonction de fractionnement et la fonction de jointure ont les spécifications suivantes.
str.split(sep=None, maxsplit=-1) Renvoie une liste de mots séparés par sep sous forme de chaîne de délimitation. Si maxsplit est donné, il sera divisé jusqu'à maxsplit fois (c'est-à-dire que la liste comprendra jusqu'à maxsplit + 1 éléments). Si maxsplit n'est pas donné ou -1, il n'y a pas de limite au nombre de fractionnements (fractionnés autant que possible). Si sep est donné, les délimiteurs consécutifs ne sont pas groupés et sont considérés comme séparant les chaînes vides (par exemple, '1 ,, 2'.split (', ') est [' 1 ',' ',' 2 '] est renvoyé). L'argument sep peut être composé de plusieurs caractères (par exemple, «1 <> 2 <> 3» .split («<>») renvoie [«1», «2», «3»]). Le fractionnement d'une chaîne vide avec un délimiteur renvoie ['']. Par exemple:
'1,2,3'.split(',')
['1', '2', '3']
'1,2,3'.split(',', maxsplit=1)
['1', '2,3']
'1,2,,3,'.split(',')
['1', '2', '', '3', '']
Si> sep n'est pas spécifié ou Aucun, un algorithme de fractionnement différent est appliqué. Les caractères vides consécutifs sont considérés comme une délimitation. De plus, même s'il y a un espace au début ou à la fin de la chaîne, la chaîne vide n'est pas incluse au début ou à la fin du résultat. Par conséquent, si vous divisez une chaîne de caractères vide ou une chaîne de caractères avec uniquement des espaces par le délimiteur Aucun, [] est renvoyé. Par exemple:
'1 2 3'.split()
['1', '2', '3']
'1 2 3'.split(maxsplit=1)
['1', '2 3']
' 1 2 3 '.split()
['1', '2', '3']
str.join(iterable) Renvoie une chaîne concaténée de chaînes dans itérable. Si iterable a une valeur non-string telle qu'un objet bytes, une TypeError sera levée. Le séparateur entre les éléments est la chaîne qui fournit cette méthode.
Je pense que c'est bien d'apprendre en utilisant de petites fonctions, mais quand il s'agit de ce problème, je pense que c'est plus simple et plus facile à comprendre en utilisant la fonction de remplacement.
Recommended Posts