有效地从字符串列表生成一组字符

时间:2014-03-19 12:32:27

标签: string algorithm language-agnostic

如何有效地从字符串列表中生成一组字符?

假设我有一个字符串列表,例如:

windows
linux-2.6

然后结果字符串应为:

-.26dilnosuwx

字符顺序应对应于字符类型(ascii / utf8)。

编程语言并不重要。我喜欢脚本解决方案(即bash,python等)。

2 个答案:

答案 0 :(得分:2)

最容易理解的方式(对我来说)将是:

create an array of 256 Boolean values
for each character in the string
    convert the character to its numerical representation (i.e. 'A' is 65, etc.)
    set the corresponding value in the array to true
end for

// done scanning strings. Now output:
for i = 0 to 255
    if array[i] is set
        output character value i

如果你正在使用Unicode字符,那么该数组必须是65,536个布尔值。

还有其他方法可以做到这一点。例如,您可以使用位数组而不是布尔值来节省空间。或者,您可以创建哈希表或使用某些语言进行设置。但是上面的工作很容易理解,并且可以翻译成几乎任何编程语言。

答案 1 :(得分:0)

我的python解决方案是随机样本

>>> import random
>>>
>>> my_string = "linux-2.6"
>>>
>>> my_set = random.sample(my_string,len(my_string))
>>>
>>> for i in my_set: print i,
2 i . u x l - 6 n