[英]The obligatory LinkedList in Java and Go, plus Kattis
前言:<\/strong>
我正在攻读计算机科学学位,我们被分配了 kattis 问题。 当前的问题是确定包含普通和方括号的字符串是否平衡,即
"(()[]())"<\/code>是平衡的,
"[)"<\/code> ,
"(()]"<\/code>等不是。
问题<\/strong>
我们应该用 Java 提交问题。 我不是特别喜欢 Java,所以今天我决定尝试 Go。 然而,下面的 Go 代码没有通过 kattis 测试,而下面的 Java 代码没有。 但是,这不是完全相同<\/em>的代码吗?
平衡.go:
package main
import (
"bufio"
"errors"
"fmt"
"os"
)
type node struct {
content rune;
next *node;
}
type list struct {
head *node;
size int;
}
func (_list *list) isEmpty() bool {
return _list.size == 0;
}
func (_list *list) push(value rune) error {
_list.head = &node{content: value, next: _list.head};
_list.size++;
return nil;
}
func (_list *list) pop() (*node, error) {
if (_list.isEmpty()) {
return nil, errors.New("");
}
oldHead := _list.head;
_list.head = oldHead.next;
_list.size--;
return oldHead, nil;
}
func main() {
scanner := bufio.NewScanner(os.Stdin);
_list := list{};
for scanner.Scan() {
next := scanner.Text();
for _, entry := range next {
switch entry {
case '(', '[':
_list.push(entry);
case ')':
_node, err := _list.pop();
if (err != nil || _node.content != '(') {
fmt.Println("0")
return;
}
case ']':
_node, err := _list.pop();
if (err != nil || _node.content != '[') {
fmt.Println("0")
return;
}
}
}
if (!_list.isEmpty()) {
fmt.Println("0")
return;
}
fmt.Println("1")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.