算法题: 给定一个字符串,里面用空格分开为6个或者更多的子单元,如:01 02 03 04 05 06 07 08... 写一函数,返回任6个进行组合的所有字符串。(java)
public string[] ToSingle(string Number) //格式 01 02 03 04 05 06 07
{
} 输出的字符串数组示例:
01 02 03 04 05 06
01 02 03 04 05 07
01 02 03 05 06 07
01 02 04 05 06 07
01 03 04 05 06 07
02 03 04 05 06 07
......
有会做的请帮忙解答一下,加上注释,最好把思路写清楚,谢谢...
public string[] ToSingle(string Number) //格式 01 02 03 04 05 06 07
{
} 输出的字符串数组示例:
01 02 03 04 05 06
01 02 03 04 05 07
01 02 03 05 06 07
01 02 04 05 06 07
01 03 04 05 06 07
02 03 04 05 06 07
......
有会做的请帮忙解答一下,加上注释,最好把思路写清楚,谢谢...
public static void main(String[] args) {
// 5选3
char[] arr = {'A','B','C','D','E'};
select(arr, 3);
}
public static void select(char[] arr, int k) {
select(arr, 0, 1, new char[k], k);
} private static void select(char[] arr, int head, int index, char[] tmp, int k) {
for (int i = head; i < arr.length + index - k; i++) {
if(index > k)
return;
tmp[index - 1] = arr[i];
if(index == k)
System.out.print(String.valueOf(tmp) + " ");
select(arr, i + 1, index + 1, tmp, k);
}
}
给你一个参考
只能按A在一定在前E一定在后的原则 那么 BCA。呢?
List<String> result = new LinkedList<String>();
if(str.length() == 1){
result.add(str);
return result;
}else {
for(int i =0 ;i<str.length();i++){
String strI = str.substring(i,i+1);
String strLeft = str.substring(0,i);
String strRight = str.substring(i+1,str.length());
List<String> newStr = arrange(strLeft+strRight);
List<String> newResultList = new LinkedList<String>();
for(int j =0;j<newStr.size();j++){
newResultList.add(strI+newStr.get(j));
}
result.addAll(newResultList);
}
return result;
}
}你传进去一个、字符串,例如"abc",会给出你想要的结果!这个思路主要是递归,因为你字符串长度可能为N
public class ArrayStringSort {
public static void main(String[] args){
String arr;
String str = " 01 02 03 04 05 06 07";
StringBuffer sb = new StringBuffer(str);
for(int i = sb.length()-3;i >= 0;i -=3){
arr = sb.substring(i,i + 3);
sb.delete(i,i + 3);
System.out.println(sb);
sb.insert(i,arr);
}
}
}
这道题似乎是求组合而非排列吧楼主想要注释,去Google上搜吧,求组合的算法很多,本人表达能力有限,解释不好