2014-09-24 128 views
1

如果我有一個7字字符串(I like it when it rains hard),我想打印它的每一個變化是打印字符串的所有變種最有效的方法?

  • a)大於兩個字

  • B)不改變原始的詞序。

如何最好地做到這一點?我將在下面打印我的最終目標是什麼:

I like it when it rains hard 
I like it when it rains 
I like it when it 
I like it when 
I like it 
I like 
like it when it rains hard 
like it when it rains 
like it when it 
like it when 
like it 
it when it rains hard 
it when it rains 
it when it 
it when 
when it rains hard 
when it rains 
when it 
it rains hard 
it rains 
rains hard 

我的計劃幾乎是實現這一目標,但並不完全,我不知道是否有解決它比我有一個更聰明的方式...?

//Strings.java 
//Goal: to print out each possible version of data without changing the original 
//order and without printing strings of less than 2 words. 

public class Strings { 

    public static void main (String[] args) { 

    String var = " "; 
    String data = "I like it when it rains hard"; 

    String [] s = data.split(" "); 

    for (int i = 0 ; i <= s.length-1 ; i++) { //inner 

    for (int j = s.length-1 ; j >= 1 ; j--) { //outer 

     for (int num = i ; num <= j ; num++) { 

      var += s[num] + " ";   
     } 
     System.out.println(var); 
     var = " "; 
    }  
    } 


    } 
} 
+3

最有效的方面是什麼? CPU使用率?內存使用情況? Cookie消費? – Patrick 2014-09-24 08:42:18

+2

您聲明您的解決方案「不完全」。爲什麼當前的解決方案無法按預期工作? – Patrick 2014-09-24 08:46:36

+1

@TheLostMind:是的,但在這種情況下,我可能會認爲,而不是讓讀者猜測。 :-) – Patrick 2014-09-24 08:48:01

回答

0

你可以只修改這樣 for (int j = s.length - 1; j > i; j--) { //outer

你是否也想擺脫的順序的語言外行?像 「我喜歡它」 - >「我喜歡什麼時候」?

+0

不,我不想排列順序詞。感謝代碼:D – user3814983 2014-09-24 08:55:17

0

如果您的句子的單詞數是Ñ,從收集下面的所有數字,其中位的計數(logcount)爲至少2。

對於每個這樣的數字,作爲位字段來看,將該位置處的位爲1的詞彙收集到新句子中。

0

只要改變一兩件事,在第二循環Ĵ應該去(I + 1)J>時=(I + 1)

public class Strings { 

    public static void main (String[] args) { 

    String var = " "; 
    String data = "I like it when it rains hard"; 

    String [] s = data.split(" "); 

    for (int i = 0 ; i <= s.length-1 ; i++) { //inner 

    for (int j = s.length-1 ; j >= i+1 ; j--) { //outer 

     for (int num = i ; num <= j ; num++) { 

      var += s[num] + " ";   
     } 
     System.out.println(var); 
     var = " "; 
    }  
    } 


    } 
} 

,你會得到相同的輸出,你想要

I like it when it rains hard 
I like it when it rains 
I like it when it 
I like it when 
I like it 
I like 
like it when it rains hard 
like it when it rains 
like it when it 
like it when 
like it 
it when it rains hard 
it when it rains 
it when it 
it when 
when it rains hard 
when it rains 
when it 
it rains hard 
it rains 
rains hard 
0

它打印的模式,但我懷疑它的複雜性。

String line = "I like it when it rains hard"; 
    String[] tokens = line.split(" "); 
    for (int i = 0; i < tokens.length; i++) { 
     int len = tokens.length; 
     for (int j = i + 1; j < len; len--) { 
      System.out.print(tokens[i] + " "); 
      for (int k = j; k < len; k++) { 
       System.out.print(tokens[k] + " "); 
      } 
      System.out.println(); 
     } 
    } 
相關問題