2014-03-19 165 views
-2

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

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

windows 
linux-2.6 

然后将得到的字符串应该是:

-.26dilnosuwx 

字符顺序应该对应字符类型(ASCII/UTF8)。

编程语言无关紧要。但我更喜欢脚本解决方案(即bash,python等)。

+1

选择一种语言,然后尝试自己编写一些代码,并且如果您在代码中遇到特定问题,那么**只有在[so]上提出问题。 – Dukeling

+0

创建一个集合,填充字符,然后对其进行排序。看起来很简单。 – Kevin

+0

为什么我不得不选择一种编程语言?我标记了这个语言不可知的原因。此外,有效执行此操作的算法对我而言并不重要,这就是我要问的原因。 – w177us

回答

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 
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布尔值。

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