如何在不使用 Collections.shuffle(...) 的情况下对字符串中的字符进行随机排序?
我如何洗牌字符串中的字符(例如,hello可以是ehlol或lleoh或...)。我不想使用这个方法,还有什么更简单的吗?Collections.shuffle(...)
我如何洗牌字符串中的字符(例如,hello可以是ehlol或lleoh或...)。我不想使用这个方法,还有什么更简单的吗?Collections.shuffle(...)
我不知道还有什么比这更简单的了。但是您可以使用Math.rand()功能在字符长度范围内生成一个随机数,而无需替换,这将为您提供随机输出
public class Shuffle {
public static void main(String[] args) {
Shuffle s = new Shuffle();
s.shuffle("hello");
}
public void shuffle(String input){
List<Character> characters = new ArrayList<Character>();
for(char c:input.toCharArray()){
characters.add(c);
}
StringBuilder output = new StringBuilder(input.length());
while(characters.size()!=0){
int randPicker = (int)(Math.random()*characters.size());
output.append(characters.remove(randPicker));
}
System.out.println(output.toString());
}
}
/*
Sample outputs
hlleo
llheo
leohl
lleho
*/
不是很好的性能,但在我看来可读性很强:
public static String shuffleString(String string)
{
List<String> letters = Arrays.asList(string.split(""));
Collections.shuffle(letters);
String shuffled = "";
for (String letter : letters) {
shuffled += letter;
}
return shuffled;
}