-1

在我的一个应用程序中,我想打乱字符串内容,而在另一个应用程序中,如果我将此打乱的字符串作为输入传递,那么该应用程序必须返回原始字符串值。在 dotnet 平台中是否有任何方法可以做到这一点?

4

2 回答 2

2

您可以使用Fisher-Yates 洗牌算法。

它是一种生成有限集合的随机排列的算法——简单来说,就是随机打乱集合。

生成数字 1-N 的随机排列的基本方法如下:

  1. 写下从 1 到 N 的数字。
  2. 在 1 和剩余的未击中数字的数量(包括)之间选择一个随机数 k。
  3. 从低端数,划掉第k个还没有划掉的数字,写在别处。
  4. 从步骤 2 开始重复,直到所有数字都被删除。
  5. 在步骤 3 中写下的数字序列现在是原始数字的随机排列。

有一个例子:洗牌算法

和好一个在这里

于 2013-04-04T08:43:49.250 回答
1

绝对不是开箱即用,而是为自己创造一个struct

struct ShuffleChar{
    char c;
    int index;
}

当你洗牌时,给每个字母分配一个,index这样你就可以把它们重新组合在一起。请记住,astring只有在字母顺序正确时才有意义,更改该顺序会破坏该信息,并且很有可能您无法恢复它......

于 2013-04-04T08:39:39.147 回答