如何在不使用数组或向量的情况下对字符串进行混洗?

时间:2017-06-12 01:09:49

标签: java

所以,在学校里,我们已经完成了这项功课,我必须要显示一个单词,而且这个人必须猜测它的内容。但是,我们还没有教过关于洗牌的话,我们的教授告诉我们 google it 。到目前为止,我已经阅读了一些文章,但它们没有用,至少在我的情况下。

所以,如果你们中的某个人可以告诉我如何向我解释,如果你们愿意的话,我会非常高兴。

无法使用数组或向量。谢谢!

2 个答案:

答案 0 :(得分:0)

一个String基本上是一个包含在类中的数组,所以这是一个有趣的要求,但是你可以一次将一个字符随机播放n次迭代。填写我发表评论的行

Random r = new Random (System.currentTimeMillis());
For (int i = 0; i < n; i ++) { // n is your number of iterations 
  int idx = r.nextInt(str.length);
  // use String .substring to move the character at index idx to the end of the string 
}

答案 1 :(得分:0)

由于它的任务,将给出基本的解释并让你参与实施。

你可以做的是创建/写一个交换函数swap(posA,posB,string),它接受​​两个参数posAposB并交换字符串'字符串中各自位置的字符”。遍历所有字符并在每种情况下生成两个随机数(位置),然后交换字符:

for (char element : string ){
   swap(genRandom(), genRandom(), string);
}

其中genRandom()是字符串长度范围内的随机数生成器。