一个面试题,不知道怎么做

懒得打字 2007-09-24 12:57:49
有一个字符数组有{'a','b','c','d','e'},要求随机输出字符序列(字符不能重复)如:baecd
要求:时间复杂度O(n),C++或Java实现
...全文
251 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yy80680169 2007-09-24
  • 打赏
  • 举报
回复
时间复杂度O(n), ...不懂..

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;


public class TestRandom {
public static void main(String[] args){
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
System.out.println(list);
Collections.shuffle(list,new Random());
System.out.println(list);
}
}
乌拉拉_ 2007-09-24
  • 打赏
  • 举报
回复
import java.util.ArrayList;

public class Atest2 {

public static void main(String args[]){

ArrayList sList = new ArrayList();
sList.add("a");
sList.add("b");
sList.add("c");
sList.add("d");
sList.add("e");
int t = 5;
String s ="";
while(sList.size()>0){

double d = Math.random();
int i = (int)(d*t);
s += (String)sList.get(i);
sList.remove(i);
t--;

}
System.out.print(s);

}


}

ou shi cai niao~~~~
zephyr_cc 2007-09-24
  • 打赏
  • 举报
回复
就是乱序一下嘛
import java.util.*;

public class Test44 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Random rnd = new Random();
char[] arr = { 'a', 'b', 'c', 'd', 'e' };
for (int i = arr.length; i > 1; i--)
swap(arr, i - 1, rnd.nextInt(i));
System.out.println(new String(arr));
}

static void swap(char[] arr, int i, int j) {
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}

要是犯懒,直接转List,然后用Collections的shuffle,一样的

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧