2016-12-14 65 views
0

比方說,我有兩個字符串數組。如何在Golang中異或兩個字符串數組?

A = [ 「AB」, 「CD」, 「EF」, 「GH」]
B = [ 「EF」, 「GH」]

我想要做的C = A^B

其中C = [「AB」,「CD」]

我知道Golang允許XOR字節明智的,但我還沒有看到文檔中字符串數組任何東西。

我該怎麼做呢?也許有人已經爲此做了一個實用程序?

+0

每個字符串中是[符文](https://golang.org/ref/spec#Rune_literals),它只是一個** int **的別名,你所要做的就是將它們轉換爲無符號整型並進行異或操作^ –

回答

1

這似乎並不喜歡的事,會去在Go標準庫,但這裏的一些代碼,做的伎倆:

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

相關問題