我在學習Go的基礎知識,並開始轉換爲Python中的Codility編寫的舊練習。下面的代碼對於大型字符串的執行速度最差約爲四分之一秒。但是,當我將它轉換爲Go時,它對大字符串的Codility性能測試失敗並在6秒內執行。將Python代碼轉換爲Go性能不佳
def solution(S):
stack = []
for i in S:
if len(stack) and stack[-1] == "(" and i == ")":
stack.pop()
continue
stack.append(i)
return 1 if len(stack) == 0 else 0
去實現
package solution
func Solution(S string) int {
stack := make([]string, 0)
for i := range S {
s := string([]rune(S)[i])
ln := len(stack)
if ln > 0 && stack[ln-1] == "(" && s == ")" {
stack = stack[:ln-1]
continue
}
stack = append(stack, s)
}
if len(stack) == 0 {
return 1
} else {
return 0
}
}
任何人都可以分享我如何能正確執行這個圍棋一些見解?
這是我想回答 https://codility.com/programmers/lessons/7-stacks_and_queues/nesting/
您可以直接使用文字''('和'')''而不是變量'open'和'close':因爲它們將是無類型的Go常量,將它們與類型爲'byte ',他們會得到真正的'byte'類型,並且由於它們的符文值落在範圍'[0..127]'中,所以它可以正常工作。 – kostix