去除输入的一行字符串中的重复字符
输入样例:(输入字符无空格)
12ere2
输出样例:
12er
package main
import "fmt"
func main() {
var c byte
var ans []byte
m := map[byte]bool{}
for {
n, _ := fmt.Scanf("%c", &c)//此处不能用fmt.Scan()来读取
if n == 0 {
break
}
if m[c] == false {
m[c] = true
ans = append(ans, c)
}
}
fmt.Println(string(ans))
}
待查:fmt.Scan()为什么不能读取一个字符就停止呢
解答:因为Scan() 从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符。本函数返回成功扫描的数据个数和遇到的任何错误。如果读取的数据个数比提供的参数少,会返回一个错误报告原因。
第二种方法:
package main
import (
"fmt"
"bufio"
"os"
)
func main() {
var ans []byte
m := map[byte]bool{}
input := bufio.NewReader(os.Stdin)
b := input.ReadLine()//ReadLine()返回的是一个[]byte
for i := 0; i < len(b); i++ {
if m[b[i]] == false {
ans = append(ans, b[i])
m[b[i]] = true
}
}
fmt.Println(string(ans))
}