2016-06-29 156 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