如果您有连续的字符串流,我正在尝试实现。在任何时候,您都必须打印字符串,以便将彼此排列的字符串打印在一起。
例如:
Input: {‘act’,’cat’,dog’,’tac’,’abc’,’god’,’bac’}
Output: {‘act’,’cat’ ,’tac’,dog’,’god’,’abc’,’bac’}
我已为此编写代码,我正在对每个字符串进行排序。如何进一步完成此代码。?
import java.util.Arrays;
public class StringAnonmous {
public static void main(String arg[]) {
String[] wordArr = {"cat", "dog", "tac", "god", "act"};
String[] clonedArr=wordArr.clone();
for(int i=0;i<wordArr.length;i++){
String word=wordArr[i];
char[] singleword=word.toCharArray();
Arrays.sort(singleword);
System.out.println(singleword);
}
}
}
答案 0 :(得分:0)
实际排列需要太长时间。对于每个字符串,可以使用26个计数的数组,其中每个计数是字符串中字母的实例数,假设所有字符串仅包含小写字母。如果字符串可以是任何字符,则使用256个计数的数组。这将允许快速比较计数,以查看两个字符串是否只是排列。
你需要一些相当快速的方法来搜索/插入一系列计数到某种类型的集合,也许是一张地图。你还需要为每个字符串使用某种类型的标识符,比如索引,以及某种类型的集合,它们可以让你注意哪些字符串是彼此的排列。
假设使用了一个映射,如果没有整数数组的默认比较器,则必须创建一个。键是一个计数数组,值是一个字符串的索引。每次执行put(键,值)时,它将返回具有相同键的先前字符串的null或索引。
现在您可以检查字符串是否是先前字符串的排列,看看您是否可以找到存储此信息的方法(唯一字符串与排列字符串)。