String 从字符串列表高效地生成字符集

String 从字符串列表高效地生成字符集,string,algorithm,language-agnostic,String,Algorithm,Language Agnostic,如何有效地从字符串列表生成一组字符? 假设我有一个字符串列表,例如: windows linux-2.6 那么结果字符串应该是: -.26dilnosuwx 字符顺序应与字符类型(ascii/utf8)相对应 编程语言并不重要。不过,我更喜欢脚本解决方案(如bash、python等)。我的python解决方案是随机样本 >>> import random >>> >>> my_string = "linux-2.6" >>&g

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

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

windows
linux-2.6
那么结果字符串应该是:

-.26dilnosuwx
字符顺序应与字符类型(ascii/utf8)相对应


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

我的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

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

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字符,则该数组必须是65536个布尔值


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

选择一种语言,然后尝试自己编写一些代码,如果您对代码有特殊问题,只需在上面提问。创建一个集合,用字符填充它,然后对它进行排序。似乎很简单。为什么我必须选择一种编程语言?我给这种语言加上不可知论的标签是有原因的。而且,有效地执行此操作的算法对我来说并不琐碎,这就是为什么我要求@w177us,因为事实上,您只是要求输出。你可能已经想了很久,并且尝试了几种方法,但是你没有给我们任何暗示。我们不知道您的思路是什么,您当前的(如果有的话)方法等等。堆栈溢出不仅仅是一个“我想做这件事,告诉我怎么做”的服务,它更像是“我试过了,但它不起作用/效率不高/不管怎样,我如何修复它?”如果您愿意,选择伪代码作为您的语言。语言并不是那么重要,逻辑才是。