如何对以第一个字符开头的字符串数组进行排序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对以第一个字符开头的字符串数组进行排序?相关的知识,希望对你有一定的参考价值。
我想生成字符串的“子集”,并按特定顺序打印输出。例如,“ rum”,我希望输出为[rum,ru,rm,r,um,u,m]我的代码在下面,现在我的输出是[rum,ru,rm,um,r,u,m]。如何更改代码以使其正常工作?
import java.util.*;
public class SubstringGenerator
String word;
public SubstringGenerator(String x) word = x;
public static void main(String[] args)
SubstringGenerator a = new SubstringGenerator("rum");
List b = a.subsets();
Collections.sort(b, Collections.reverseOrder(Comparator.comparing(String::length)));
System.out.println(b);
public List subsets()
ArrayList<String> subsets = new ArrayList<String>();
int len = word.length();
for (int i = 0; i < Math.pow(2,len); i++)
String a = "";
for (int j = 0; j < len; j++)
if ((i & (int) (Math.pow(2,j))) > 0) a += word.charAt(j) + "";
subsets.add(a);
return subsets;
答案
import java.util.*;
import java.lang.Math;
public class SubstringGenerator
String word;
public SubstringGenerator(String x) word = x;
public static void main(String[] args)
SubstringGenerator a = new SubstringGenerator("rum");
List b = a.subsets();
System.out.println(b);
public List subsets()
ArrayList<String> subsets = new ArrayList<String>();
int len = word.length();
for (int i = (int)(Math.pow(2,len)-1.0); i >0; i--)
String a = "";
String b= Integer.toBinaryString(i);
while(b.length()!=word.length()) b="0"+b;
for(int j=0; j<b.length(); j++) if (b.charAt(j)=='1') a+=word.substring(j, j+1);
subsets.add(a);
return subsets;
以上是关于如何对以第一个字符开头的字符串数组进行排序?的主要内容,如果未能解决你的问题,请参考以下文章