Golang文字列から重複文字を除去
8326 ワード
二つの方法
1つ目はgolangのmapデータ構造を利用しており,除去された文字列の順序は保証されず,2つ目は保証できる.
1
2
第2の方法の過程は展示します
1つ目はgolangのmapデータ構造を利用しており,除去された文字列の順序は保証されず,2つ目は保証できる.
1
func chazhao(str string) string {
x := make(map[string]int, len(str))
for i := 0; i < len(str); i++ {
x[fmt.Sprintf("%c", str[i])] = i
}
i := ""
for k, _ := range x {
i += fmt.Sprint(k)
}
return i
}
2
func xun(str string) string {
// golang ,
slice := make([]string, 0, len(str))
for i := 0; i < len(str); i++ {
slice = append(slice, str[i:i+1])
}
// ,
//
// eg, waddax --> w [addax]
// , ""
for i := 0; i < len(slice); i++ {
// , ,
if slice[i] == "" {
continue
}
if i == len(slice)-1 {
// , ,
// ,
break
}
for k, v := range slice[i+1:] {
if slice[i] == v {
slice[i+k+1] = "" // i+k+1
}
}
}
//
s := ""
for _, v := range slice {
if v == "" {
continue
}
s += fmt.Sprint(v)
}
return s
}
第2の方法の過程は展示します
func main() {
xun("abcasxdeabec")
}
--> a [b c a s x d e a b e c]
--> b [c s x d e b e c]
--> c [ s x d e e c]
--> s [x d e e ]
--> x [d e e ]
--> d [e e ]
--> e [ e ]
abcsxde