J'ai essayé LeetCode tous les jours 9. Palindrome Number (Python, Go)

introduction

@Ishishow gère un site de mots anglais gratuit E-tan.

J'aimerais travailler quotidiennement sur letcode pour améliorer mes capacités de programmeur et donner ma propre façon de le résoudre.

Qu'est-ce que Leetcode

leetcode.com C'est la pratique de coder des interviews pour les développeurs de logiciels. Au total, plus de 1 500 questions de codage ont été affichées, et il semble que les mêmes questions soient souvent posées lors d'entretiens réels.

Introduction au langage Go + Algorithme Je vais le résoudre avec Golang et Python pour renforcer mon cerveau. (Python est faible mais expérimenté)

Troisième question (problème 09)

Palindrome Number

Déterminez si l'entier est une circulaire. Un entier est une circulation lorsqu'il est lu de la même manière en avant et en arrière.

** Suivi: ** Peut-il être résolu sans convertir l'entier en chaîne?

Example 1:

  Input: x = 121
  Output: true

Example 2:

  Input: x = -121
  Output: false
  Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

  Input: x = 10
  Output: false
  Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Example 4:

  Input: x = -101
  Output: false

Façon de penser

  1. Faites un jugement positif / négatif et ne traitez que positivement. 2.Faites une chaîne de caractères et jugez dans l'ordre inverse

Explication

  1. S'il est négatif, ce ne sera pas une diffusion.
  2. Vous pouvez créer int str en utilisant la fonction str. Ensuite, utilisez les tranches dans l'ordre inverse. .. .. (Non recommandé en raison d'un problème)

--Code de réponse

  class Solution(object):
      def isPalindrome(self, x):
          return str(x) == str(x)[::-1]

Le jugement se fait en inversant les chaînes de caractères à l'aide de tranches! Nous avons reçu des conseils de @shiracamus. La valeur de l'expression de comparaison étant une valeur booléenne, l'expression conditionnelle peut être omise. Code précédent ↓

 def isPalindrome(self, x):
      if x >= 0:
          if str(x) == str(x)[::-1]:
              return True
      return False
  import "strconv"
  func isPalindrome(x int) bool {
  	s := strconv.Itoa(x)
  	r := []rune(s)
  	for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 {
  		if r[i] != r[j] {
  			return false
  		}
  	}
  	return true
  }

La solution est la même, mais dans le cas de Go, la chaîne est immuable, c'est donc la façon de l'écrire.

J'ai également importé le paquet strconv et utilisé Itoa. Entier à a.

Temps d'exécution Go et Python

À partir de la gauche, RunTime, Memory, language. キャプチャ.PNG

Une autre solution

Je l'ai résolu comme un nombre en utilisant le mécanisme de 9.Integer Integer que j'ai résolu la veille. (Ceci est recommandé.)

func isPalindrome(x int) bool {
    if x<0{
        return false
    }
    new_var := x 
    rev := 0
    for x!=0{
        pop := x%10
        x = x/10
        
        rev = rev *10 + pop
    }
    if rev==new_var{
        return true
    }else{
        return false
    }
}

-Self memo (Go)

Utilisez le type rune pour gérer les chaînes caractère par caractère

La chaîne peut être convertie en [] rune et [] octet.

La condition réelle de rune est int32, et celle de unicode Suffisamment grand pour représenter 4 octets

string et rune Les tableaux peuvent être convertis les uns aux autres, donc si vous voulez couper une chaîne

  package main
  
  import "fmt"
  
  func main() {
      nihongo := "Japonais"
  
      fmt.Printf("nihongo = %s\n", nihongo)
      fmt.Printf("nippon = %s\n", string([]rune(nihongo)[:2]))
  }

Comme string[] runestring Il peut être traité en toute sécurité en le convertissant en .

Résultat d'exécution

  nihongo =Japonais
  nippon =Japon

Articles référencés

First Go Language (sous Windows) Partie 4

Connaissance Unicode pour comprendre la rune Go

Recommended Posts

J'ai essayé LeetCode tous les jours 9. Palindrome Number (Python, Go)
J'ai essayé LeetCode tous les jours 7. Integer Integer (Python, Go)
J'ai essayé LeetCode tous les jours 20. Parenthèses valides (Python, Go)
J'ai essayé LeetCode tous les jours 1. Two Sum (Python, Go)
J'ai essayé LeetCode tous les jours 13. Roman to Integer (Python, Go)
J'ai essayé LeetCode tous les jours 14.Le plus long préfixe commun (Python, Go)
J'ai essayé LeetCode tous les jours 21. Fusionner deux listes triées (Python, Go)
J'ai essayé LeetCode tous les jours 26. Supprimer les doublons du tableau trié (Python, Go)
J'ai essayé Grumpy (allez exécuter Python).
J'ai essayé d'exécuter faiss avec python, Go, Rust
J'ai essayé Python> autopep8
J'ai essayé Python> décorateur
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai essayé de toucher Python (installation)
J'ai essayé webScraping avec python.
J'ai essayé d'utiliser Thonny (Python / IDE)
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la notification de ligne en Python
J'ai essayé la communication SMTP avec Python
Mayungo's Python Learning Episode 6: J'ai essayé de convertir une chaîne de caractères en nombre
(Python) J'ai essayé d'analyser 1 million de mains ~ J'ai essayé d'estimer le nombre d'AA ~
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
Livre Wrangle x Python Je l'ai essayé [2]
Entrée standard Python3 que j'ai essayé de résumer
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé un langage fonctionnel avec Python
J'ai essayé la récurrence avec Python ② (séquence de nombres Fibonatch)
J'ai essayé d'implémenter PPO en Python
Python: j'ai essayé le problème du voyageur de commerce
Livre Wrangle x Python Je l'ai essayé [1]
Mayungo's Python Learning Episode 8: J'ai essayé l'entrée
[Python] J'ai essayé de calculer TF-IDF régulièrement
J'ai essayé de toucher Python (syntaxe de base)
J'ai essayé le framework de test Python Tornado
# J'ai essayé quelque chose comme Vlookup avec Python # 2