打印字符串,使得那些彼此排列的字符串在java中一起打印

时间:2016-06-29 15:43:44

标签: java string sorting

如果您有连续的字符串流,我正在尝试实现。在任何时候,您都必须打印字符串,以便将彼此排列的字符串打印在一起。

例如:

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);

    }

}

}

1 个答案:

答案 0 :(得分:0)

实际排列需要太长时间。对于每个字符串,可以使用26个计数的数组,其中每个计数是字符串中字母的实例数,假设所有字符串仅包含小写字母。如果字符串可以是任何字符,则使用256个计数的数组。这将允许快速比较计数,以查看两个字符串是否只是排列。

你需要一些相当快速的方法来搜索/插入一系列计数到某种类型的集合,也许是一张地图。你还需要为每个字符串使用某种类型的标识符,比如索引,以及某种类型的集合,它们可以让你注意哪些字符串是彼此的排列。

假设使用了一个映射,如果没有整数数组的默认比较器,则必须创建一个。键是一个计数数组,值是一个字符串的索引。每次执行put(键,值)时,它将返回具有相同键的先前字符串的null或索引。

现在您可以检查字符串是否是先前字符串的排列,看看您是否可以找到存储此信息的方法(唯一字符串与排列字符串)。