簡體   English   中英

Java - 混淆字母

[英]Java - Mix up letters

有人可以給我一個例子,說明如何在打亂字母之前拆分字符串

我可以打亂單詞,但它也會改變單詞的長度

例子:

輸入:你好,我叫喬恩

輸出:e imanoJs my nlolHe

但它應該是這樣的

輸入:你好,我叫喬恩

輸出:Hlelo 我的 nmae 是 Jon

所以第一個和最后一個字母應該保持原樣

到目前為止,這是我的代碼

public class MixUp{
    public static void main(String[] args){
        String cards="Hello my Name is Jon, nice to meet you";
        System.out.println("Input String = " + cards);
        cards = shuffle(cards);
        System.out.println("Shuffled String = " + cards);
     }

    static String shuffle(String cards){
        if (cards.length()<=1)
            return cards;

        int split=cards.length()/2;

        String temp1=shuffle(cards.substring(0,split));
        String temp2=shuffle(cards.substring(split));

        if (Math.random() > 0.5) 
            return temp1 + temp2;
        else
            return temp2 + temp1;
    }
}

inputString.split(" ")將在空格上拆分並返回一個字符串數組。 創建一個新數組,遍歷第一個拆分數組並打亂每個字符串並將打亂的字符串添加到新數組中。

String cards="Hello my Name is Jon, nice to meet you";
System.out.println("Input String = " + cards);
String[] splt = cards.split(" ");
String[] shuffled = new String[splt.length];
for (int iter = 0; iter < splt.length; iter ++){
    shuffled[iter] = shuffle(splt[iter]);
}
// Now join the array

編輯最好還是使用 StringBuilder

String cards="Hello my Name is Jon, nice to meet you";
System.out.println("Input String = " + cards);
String[] splt = cards.split(" ");
StringBuilder sb = new StringBuilder();
for (int iter = 0; iter < shuffled.length; iter ++){
    sb.append(shuffle(splt[iter]) + " ");
}
String shuffled = sb.toString();

筆記

  • 將 Collections.shuffle() 與 List.subList() 結合使用,以便不移動第一個和最后一個字母。
  • 與原始數組相互轉換,以便可以使用 Collections.shuffle()

代碼

private static String shuffle(String sentence) {
    String[] words = sentence.split("\\s+");
    StringBuilder builder = new StringBuilder();
    for (String word : words) {
        List<Character> letters = new ArrayList<Character>();
        for (char letter : word.toCharArray()) {
            letters.add(letter);
        }
        if (letters.size() > 2) {
            Collections.shuffle(letters.subList(1, letters.size() - 1));
        }
        for (char letter : letters) {
            builder.append(letter);
        }
        builder.append(" ");
    }
    return builder.toString();
}

您應該將句子拆分為單詞,然后將單詞打亂:

String[] words = sentence.split(" ");

for(String word : words)
   word = shuffle(word);

然后將單詞連接成一個句子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM