@Ishishow betreibt eine kostenlose englische Word-Site E-tan.
Ich möchte jeden Tag an Letcode arbeiten, um meine Fähigkeiten als Programmierer zu verbessern und meine eigene Art der Lösung zu finden.
leetcode.com Dies ist die Praxis des Codierens von Interviews für Softwareentwickler. Insgesamt wurden mehr als 1.500 Codierungsfragen gestellt, und es scheint, dass in tatsächlichen Interviews häufig dieselben Fragen gestellt werden.
Einführung in Go Sprache + Algorithmus Ich werde es mit Golang und Python lösen, um mein Gehirn zu stärken. (Python ist schwach, aber erfahren)
Palindrome Number
--Probleminhalt (japanische Übersetzung)
Bestimmen Sie, ob die Ganzzahl ein Kreis ist. Eine Ganzzahl ist eine Zirkulation, wenn sie auf die gleiche Weise vorwärts und rückwärts gelesen wird.
** Follow-up: ** Kann es gelöst werden, ohne die Ganzzahl in eine Zeichenfolge zu konvertieren?
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
--Antwortcode
class Solution(object):
def isPalindrome(self, x):
return str(x) == str(x)[::-1]
Die Beurteilung erfolgt durch Umkehren der Zeichenketten mit Slices! Wir wurden von @shiracamus beraten. Da der Wert des Vergleichsausdrucks ein boolescher Wert ist, kann der bedingte Ausdruck weggelassen werden. Vorheriger Code ↓
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
}
Die Lösung ist dieselbe, aber im Fall von Go ist die Zeichenfolge unveränderlich. Auf diese Weise können Sie sie schreiben.
Ich habe auch das strconv-Paket importiert und Itoa verwendet. Ganzzahl zu a.
Go und Python-Ausführungszeit
Von links RunTime, Speicher, Sprache.
Ich habe es als Zahl mit dem Mechanismus von 9.Reverse Integer gelöst, den ich am Tag zuvor gelöst habe. (Dies wird empfohlen.)
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
}
}
Verwenden Sie den Typ Rune, um Zeichenfolgen Zeichen für Zeichen zu behandeln
Der String kann in [] Rune und [] Byte umgewandelt werden.
Der tatsächliche Zustand von Rune ist int32 und der von Unicode. Groß genug, um 4 Bytes darzustellen
string und rune Arrays können ineinander konvertiert werden, wenn Sie also einen String schneiden möchten
package main
import "fmt"
func main() {
nihongo := "japanisch"
fmt.Printf("nihongo = %s\n", nihongo)
fmt.Printf("nippon = %s\n", string([]rune(nihongo)[:2]))
}
Wie string
→[]
rune
→ [string Es kann sicher verarbeitet werden, indem es in
] konvertiert wird (http://golang.org/ref/spec#String_types).
Ausführungsergebnis
nihongo =japanisch
nippon =Japan
First Go Language (unter Windows) Teil 4
Unicode-Kenntnisse zum Verständnis der Go-Rune
Recommended Posts