如何有效地从字符串列表中生成一组字符?从字符串列表中有效生成一组字符
假设我有一个字符串列表,例如:
windows
linux-2.6
然后将得到的字符串应该是:
-.26dilnosuwx
字符顺序应该对应字符类型(ASCII/UTF8)。
编程语言无关紧要。但我更喜欢脚本解决方案(即bash,python等)。
如何有效地从字符串列表中生成一组字符?从字符串列表中有效生成一组字符
假设我有一个字符串列表,例如:
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字符的工作的话,该数组必须是65,536布尔值。
还有其他的方法可以做到这一点。例如,您可以使用位数组而不是布尔值来节省空间。或者,您可以创建一个哈希表或用某些语言设置,例如。但上述作品很容易理解,并且可以翻译成几乎任何编程语言。
选择一种语言,然后尝试自己编写一些代码,并且如果您在代码中遇到特定问题,那么**只有在[so]上提出问题。 – Dukeling
创建一个集合,填充字符,然后对其进行排序。看起来很简单。 – Kevin
为什么我不得不选择一种编程语言?我标记了这个语言不可知的原因。此外,有效执行此操作的算法对我而言并不重要,这就是我要问的原因。 – w177us