2016-12-14 9 views
0

私は2つの文字列配列を持っているとしましょう。Golangで2つの文字列をXORする方法は?

A = [ "AB"、 "CD"、 "EF"、 "GH"]
B = [ "EF"、 "GH"]

私はC = A^B

をしたいですC = [「AB」、「CD」]

は、私は承知している

Golangは、XORバイト単位ことができますが、私は、ドキュメント内の文字列の配列のために何を見ていません。

どうすればいいですか?おそらく誰かがすでにこのために作ったユーティリティがあるでしょうか?

+0

それぞれが[ありrune](https://golang.org/ref/spec#Rune_literals)は** int **のエイリアスです。あなたがしなければならないのは、それらをunsigned intに変換してxor演算を実行するだけです^ –

答えて

1

これは、移動中の標準ライブラリに行くと何かのように見えるしていませんが、ここではトリックを行うコードのビットがあります:文字列の

package main 

import (
    "fmt" 
) 

func main() { 
    A := []string{"ab", "cd", "ef", "gh"} 
    B := []string{"ef", "gh"} 
    fmt.Println(xor(A,B)) 
} 

func xor(list1, list2 []string) []string { 
    set1 := make(map[string]bool) 
    for _, s := range list1 { 
     set1[s] = true 
    } 
    set2 := make(map[string]bool) 
    for _, s := range list2 { 
     set2[s] = true 
    } 

    var c []string 
    for _, s := range list1 { 
     if !set2[s] { 
      c = append(c, s) 
     } 
    } 
    for _, s := range list2 { 
     if !set1[s] { 
      c = append(c, s) 
     } 
    } 
    return c 
} 

https://play.golang.org/p/SDPhNIQ66E

関連する問題