在我的一个应用程序中,我想打乱字符串内容,而在另一个应用程序中,如果我将此打乱的字符串作为输入传递,那么该应用程序必须返回原始字符串值。在 dotnet 平台中是否有任何方法可以做到这一点?
问问题
386 次
2 回答
2
您可以使用Fisher-Yates 洗牌算法。
它是一种生成有限集合的随机排列的算法——简单来说,就是随机打乱集合。
生成数字 1-N 的随机排列的基本方法如下:
- 写下从 1 到 N 的数字。
- 在 1 和剩余的未击中数字的数量(包括)之间选择一个随机数 k。
- 从低端数,划掉第k个还没有划掉的数字,写在别处。
- 从步骤 2 开始重复,直到所有数字都被删除。
- 在步骤 3 中写下的数字序列现在是原始数字的随机排列。
有一个例子:洗牌算法
和好一个在这里
于 2013-04-04T08:43:49.250 回答
1
绝对不是开箱即用,而是为自己创造一个struct
struct ShuffleChar{
char c;
int index;
}
当你洗牌时,给每个字母分配一个,index
这样你就可以把它们重新组合在一起。请记住,astring
只有在字母顺序正确时才有意义,更改该顺序会破坏该信息,并且很有可能您无法恢复它......
于 2013-04-04T08:39:39.147 回答