1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-03-01 00:35:28 +08:00

Strutil: HammingDistance func

The Hamming distance is the number of positions at which the corresponding symbols are different
This commit is contained in:
Marcel Edmund Franke
2024-03-02 15:35:19 +01:00
parent 7a98c431d3
commit 4e515e9bd5
3 changed files with 58 additions and 0 deletions
+22
View File
@@ -4,6 +4,7 @@
package strutil
import (
"errors"
"regexp"
"strings"
"unicode"
@@ -594,3 +595,24 @@ func SubInBetween(str string, start string, end string) string {
return ""
}
// HammingDistance calculates the Hamming distance between two strings.
// The Hamming distance is the number of positions at which the corresponding symbols are different.
// This func returns an error if the input strings are of unequal lengths.
func HammingDistance(a, b string) (int, error) {
if len(a) != len(b) {
return -1, errors.New("a length and b length are unequal")
}
ar := []rune(a)
br := []rune(b)
var distance int
for i, codepoint := range ar {
if codepoint != br[i] {
distance++
}
}
return distance, nil
}