@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.
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é)
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
--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.
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
→[]
rune
→ string Il peut être traité en toute sécurité en le convertissant en
.
Résultat d'exécution
nihongo =Japonais
nippon =Japon
First Go Language (sous Windows) Partie 4
Connaissance Unicode pour comprendre la rune Go
Recommended Posts