67,513
社区成员
发帖
与我相关
我的任务
分享
/**
*
* @param str 即将要搜寻的字符串
* @param arrayList 存储选中的字符
* @param index 选到第几个字符了 0~str.length-1
* @param remain 还有多少个字符要被搜寻
*/
public static void find(String str , ArrayList<Character> arrayList , int index , int remain){
if(index <= str.length() - 1 && remain > 0){
// 这个字符被选中
arrayList.add(str.charAt(index));
find(str, arrayList, index + 1, remain - 1);
arrayList.remove(new Character(str.charAt(index)));
// 这个字符没有被选中
find(str, arrayList, index + 1, remain);
}else{
// 如果已经选了sum个字符则输出
if(remain == 0){
System.out.println(arrayList.toString());
}
}
}
public static void main(String[] args) {
String str = "abc";
find(str, new ArrayList<Character>(), 0, 2);
}
public class SonString {
public static void main(String[] args) {
String s="abcdef";
int n = 2;
int [] a = new int[n];
char[] b = s.toCharArray();
for(int k=0; k<n;k++) {
a[k] = k+1;
}
int m=s.length(), i, position;
for(i=0; i<n; i++){
System.out.print(b[a[i]-1]);
}
System.out.println();
boolean flag = true;
position = n-1;
while(flag) {
if(a[n-1]==m)
position--;
else
position=n-1;
a[position]++;
for(i=position+1; i<n; i++)
a[i]=a[i-1]+1;
for(i=0; i<n; i++)
System.out.print(b[a[i]-1]);
System.out.println();
if(a[0]>=m-n+1)
flag = false;
}
}
}
利用下标组合来找字串 public static void main(String[] args){
int n = 3;
String str ="abcd";
String result = "";
subselect(0, 1, result,str, n);
}
private static void subselect(int head, int length,String result, String str,int n) {
String s =result;
for (int i = head; i < str.length() + length - n; i++) {
if (length < n) {
result = result+str.substring(i,i+1);
subselect(i + 1, length + 1, result,str, n);
} else if (length == n) {
result = result+str.substring(i,i+1);
subselect(i + 1, length + 1, result,str, n);
System.out.println(result);
} else {
return;
}
result =s;
}
}