该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
public class ABC {
static int[] flags;
static char[] num;
public static String creatString(){
StringBuilder sb = new StringBuilder();
for(int i =0;i
if(flags[i]==1){
sb.append(num[i]);
}
}
return sb.toString();
}
public static char[] creatChar(String str){
char[] nums = new char[str.length()];
for(int i =0;i
nums[i] = str.charAt(i);
}
return nums;
}
public static int num(String str){
int total =1;
for(int i =0;i
total *=2;
}
return total;
}
@SuppressWarnings("resource")
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.nextLine().toUpperCase();
Set set = new HashSet();
num = creatChar(str);
flags = new int[str.length()];
for(int i =0;i<=num(str);i++){
flags[0]++;
for(int j =0;j
if(flags[j]==2){
flags[j+1]++;
flags[j]=0;
}
}
set.add(creatString());
}
List list = new ArrayList(set);
List list1 = new ArrayList();
int max = 0;
for(int i =0;i
boolean f = true;
String temp = list.get(i);
if(temp.length()>1){
char[] temps = creatChar(temp);
for(int j =0;j
if(temps[j]>=temps[j+1]){
f = false;
break;
}
}
if(f){
list1.add(temp);
if(max
max = temp.length();
}
}
}
}
System.out.println("最大长度为"+max+"有");
for(String l:list1){
if(max == l.length()){
System.out.println(l);
}
}
}
}
模拟二进制获取字符串的全部排列,经过两层筛选得到最后结果。。我算不算一个有想法的小伙伴,求鼓励