2017-09-06 53 views
-2

例如,string =「ABCDEFGH」。如果n = 2,那麼輸出應該是「BADCFEHG」;如果n = 3,則輸出應該是「CBAFEDHG」。 我知道我應該使用stringbuilder來反向,但我怎麼能將字符串拆分爲n部分,然後反轉每個部分?如何使用java反轉n個字符串中的n個字符

+1

歡迎來到SO。在發佈StackOverflow的問題/需求之前,你應該做一些研究。請參見[ask],然後編輯你的問題,其中包含一些你的嘗試 – AxelH

+0

[在Java中反轉字符串]可能的重複(https://stackoverflow.com/questions/7569335/reverse-a-string-in-java) – pedromss

+0

@pedromss我認爲這不是一個直接的重複,這個工作N個字母組而不是單個字母 – jrtapsell

回答

1
String newStr=""; 
String oldStr = "ABCDEFGH"; 
for(int i =0; i<oldStr.length();i+=n) { 
    if(i+n >= oldStr.length()){ 
     n = oldStr.length()-i; 
    } 
    newStr += new StringBuilder(oldStr.substring(i,i+n)).reverse().toString(); 
} 

編輯:對於錯讀你的問題抱歉,這個小循環做你要求的! 我們在這裏做的是讓oldString.length()/n迭代以n部分分割字符串。因爲長度可能不能被你的n分割,所以我們必須檢查i+n是否會大於你的單詞長度(最終會創建一個IndexOutOfBoundsException)。如果是這種情況,我們只需設置n,這樣它就可以增加我對這個詞的其他部分。希望解釋得很好。

+0

其餘的?這是不完整的,你只能扭轉N字符的第一個塊。 – AxelH

+0

@AxelH抱歉想念你的問題,結帳編輯!你當然可以快捷地聲明newString1&2,這樣就可以提高可讀性。 –

+0

不是我的問題......但你仍然是不正確的,「ABCDEF」應輸出爲2「BADCFE」而不是「BACDEF」的塊。你需要迭代'String'來反轉每個塊,而不是第一個塊和'String'的其餘部分。 – AxelH

4

我不會給你這個代碼,你需要通過嘗試來學習。在一個循環String.substring(int, int)

一步地執行這一要求的步驟:

  1. 如何讀取塊String塊。您需要了解如何計算每個塊
  2. 的boundery如何扭轉String:看到有關Reverse a String in JAVA
  3. 通過混合這兩個步驟中創建的輸出。

不要試圖一勞永逸。找到如何做到這兩個分離,然後把邏輯放在一起。最後這很簡單。

0

我已經給你大部分的代碼,但它是未完成的。您必須瞭解我所忽略的內容以及如何解決問題才能完成此問題。

String originalString = someString;   //String from user 
String tempString = "";      //String used for temporary reasons 
String finalString = "";     //Your end result 

int n = someNumber;       //Number from user 

//Loops through the original string, incrementing by n each time 
for (int i = 0; i < originalString.length() - n; i += n) 
{ 
    //Gives us the current substring to reverse 
    tempString = originalString.substring(i, i + n); 

    //Starts at end of substring and adds each char to the final string 
    for (j = n - 1; j >= 0; j--) 
    { 
     finalString += tempString.charAt(j); 
    } 
} 
相關問題