2016-06-29 77 views
-2

我试图实现如果您有连续的字符串流。在任何时间点,您必须打印字符串,以便将相互排列的字符串打印在一起。打印字符串,使彼此排列的字符串在java中打印在一起

例如:

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

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

你需要一些相当快的方法来搜索/插入一些计数数组到一些类型的集合中,也许是一张地图。您还需要为每个字符串使用某种类型的标识符,例如索引,以及某种类型的集合,以便您能够注意哪些字符串是相互排列的。

假设使用地图,如果没有默认的整数数组比较器,则必须创建一个。该键将是一个计数数组,并且该值是一个字符串的索引。每次你做一个put(key,value)时,它将返回null或者具有相同键的前一个字符串的索引。

所以,现在你有一种方法来检查一个字符串是否是先前字符串的置换,看看你是否可以找出一种方法来存储这些信息(唯一的字符串与排列的字符串)。

+0

你可以请建议一个/ –

+0

@JavaDevelopers - 假设这是作业,我只能提供建议。我更新了我的答案,以显示如何使用地图来检查字符串的“匹配”。 – rcgldr