ꡬλΆμλ₯Ό λ£μ΄ μ€λ₯λ₯Ό λ°©μ§νλ€.
- UTF-8μ λ²μ΄λλ ꡬλΆμ
γ±μ λ£μ΄ ꡬλΆνλ€.
-
Time complexity:
$$O(n)$$ - λ¬Έμμ΄μ κΈΈμ΄ nμ λνμ¬, μ΄λ₯Ό μννλ λΉμ©μ΄ λ°μνλ€.
-
Space complexity:
$$O(n)$$ - λ¬Έμμ΄μ κΈΈμ΄ nμ λνμ¬,
encodedλ₯Ό λ§λλ 곡κ°μ΄ λ°μνλ€.
- λ¬Έμμ΄μ κΈΈμ΄ nμ λνμ¬,
const DIVIDE_CHAR_V1 = 'γ±'
func encodeV1(strs []string) string {
ret := strings.Join(strs, string(DIVIDE_CHAR_V1))
return ret
}
func decodeV1(encoded string) []string {
sep := string(DIVIDE_CHAR_V1)
return strings.Split(encoded, sep)
}μ루μ μμ λ€νΈμν¬ ν΅μ μ μνλ€λ λͺ©μ μ λ£κ³ μμ ν΄λ³΄μλ€. (μ λμ½λλ₯Ό λ£λ κ² μλλ μλ λ―νλ€.)
- ꡬλΆμ (
-)μ μ΄μ λ¬Έμμ κΈΈμ΄λ₯Ό ν¨κ» μ μ₯νλ€. - ꡬλΆμκ° λμ¨λ€λ©΄, λ¬Έμμ΄μ κΈΈμ΄λ₯Ό μΆμΆνμ¬ λ¬Έμμ΄μ λμ½λ©νλ€.
- μ κ³Όμ μ λ°°μ΄μ μννλ©° λ°λ³΅νλ€.
-
Time complexity:
$$O(n)$$ - λ¬Έμμ΄μ κΈΈμ΄ nμ λνμ¬, μ΄λ₯Ό μννλ λΉμ©μ΄ λ°μνλ€.
-
Space complexity:
$$O(n)$$ - λ¬Έμμ΄μ κΈΈμ΄ nμ λνμ¬,
encodedλ₯Ό λ§λλ 곡κ°μ΄ λ°μνλ€.
- λ¬Έμμ΄μ κΈΈμ΄ nμ λνμ¬,
const DIVIDE_CHAR = '-'
func encode(strs []string) string {
ret := ""
for _, str := range strs {
ret += str
ret += fmt.Sprintf("%c%04d", DIVIDE_CHAR, len(str))
// a-1bcd-3
}
return ret
}
func decode(encoded string) []string {
ret := make([]string, 0)
for i := 0; i < len(encoded); {
if encoded[i] == DIVIDE_CHAR {
lenStr := encoded[i+1 : i+5]
len, _ := strconv.Atoi(lenStr)
decodeStr := encoded[i-len : i]
ret = append(ret, decodeStr)
i += 5
} else {
i += 1
}
}
return ret
}