第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Java中交換字符數(shù)組(就地)

如何在Java中交換字符數(shù)組(就地)

開滿天機(jī) 2022-06-30 10:20:11
所以基本上沒有能夠/被允許制作一個新數(shù)組。無法返回任何內(nèi)容,但實(shí)際上更改和操作當(dāng)前數(shù)組。您如何獲取一組字符并簡單地翻轉(zhuǎn)/反轉(zhuǎn)它們。Starting array: ['P','e','r','f','e','c','t',' ','M','a','k','e','s',' ','P','r','a','c','t','i','c','e']反轉(zhuǎn)每個以空格分隔的單詞Reversed: ['P','r','a','c','t','i','c','e',' ','M','a','k','e','s',' ','P','e','r','f','e','c','t'] 這是我到目前為止所擁有的代碼:  class Main {     public static void main(String[] args) {       char[] charArr = new char[] {'P','e','r','f','e','c','t',' ','M','a','k','e','s',' ','P','r','a','c','t','i','c','e'};       reverseCharArray(charArr);     }     public static void reverseCharArray() {       int arrLength = charArr.length;       for (int i = 0; i <= arrLength / 2; i++) {         charArr[arrLength - i - 1] = charArr[i];         System.out.println(charArr);       }     }   }更新:好的,我發(fā)現(xiàn)就是這樣。我需要做的實(shí)際上是交換字符的句子拼寫的單詞。使句子倒轉(zhuǎn)/倒轉(zhuǎn)。
查看完整描述

4 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個贊

這絕對不是一個好的解決方案,但它是一個有效的解決方案。


class Main {


public static void main(String[] args) {

    char[] charArr = new char[] { 'P', 'e', 'r', 'f', 'e', 'c', 't', ' ', 'M', 'a', 'k', 'e', 's', ' ', 'P', 'r',

            'a', 'c', 't', 'i', 'c', 'e' };

    System.out.println(charArr);

    reverseCharArray(charArr,0);

    System.out.println(charArr);

}



public static void reverseCharArray(char[] charArr, int sorted) {



    /* Look for last space*/

    int lastSpace = -1;

    for (int i = 0; i < charArr.length; i++) { 

        if (charArr[i] == ' ') {

            lastSpace = i; 

        }

    }


    /* Grab the word and move it at the beginning of the sorted array */

    for (int i = lastSpace + 1; i < charArr.length; i++) {


        int k = i;


        while (k != sorted) {

            char tmp = charArr[k-1];

            charArr[k-1] = charArr[k];

            charArr[k] = tmp;

            k--;

        }


        sorted++;

    }



    /* At this point, the last character is a space*/

    /* Else, we've swapped all the words */

    int k = charArr.length - 1;

    if (charArr[k] != ' ') {

        return;

    }


    /* If it's a space, grab it and move it at the beginning*/

    while (k != sorted) {

        char tmp = charArr[k-1];

        charArr[k-1] = charArr[k];

        charArr[k] = tmp;

        k--;

    }

    sorted++;



    /*Recursive call on the not sorted array*/

    reverseCharArray(charArr,sorted);


}}


查看完整回答
反對 回復(fù) 2022-06-30
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個贊

下面的方法交換間隔。請注意,它們必須具有相同的長度。


public static char[] swap(char[] arr, int lstart, int rstart, int len){

      for(int i=lstart; i<lstart+len; i++){

        char temp = arr[i];

        arr[i] = arr[rstart+i];

        arr[rstart+i] = temp;

   }

   return arr;

}


查看完整回答
反對 回復(fù) 2022-06-30
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個贊

假設(shè)您有以下數(shù)組;[h, e, y,  , y, o, u]你必須以一種模式工作;從外到內(nèi)(或相反)。因此,[1,2,3,4,3,2,1]您必須交換1and 1,2依此2類推。如您所見,該數(shù)組的長度為 7,在這種情況下,所需的交換量正好是 4(4與其自身交換)。要計(jì)算交換量,您可以簡單地將數(shù)組長度除以 ceil 2.0f。


現(xiàn)在你必須遍歷數(shù)組,交換那些索引。要計(jì)算要交換的索引,您必須檢查您的交換位置。假設(shè)您在第二次交換中,2數(shù)組中的索引是 1 和 5,的索引3是 2 和 4。您現(xiàn)在可能已經(jīng)識別出這種模式。第一個索引始終是已完成交換的數(shù)量,第二個是數(shù)組的長度減去 1 減去已完成交換的數(shù)量。


這是放入代碼的;



    public static void swap(char[] array){

        int totalSwaps = (int) Math.ceil(array.length / 2.0f);

        for(int currentSwaps = 0; currentSwaps < totalSwaps; currentSwaps++){

            char char1 = array[currentSwaps];

            int position2 = array.length - (currentSwaps + 1);

            array[currentSwaps] = array[position2];

            array[position2] = char1;

        }

        System.out.println(Arrays.toString(array));

    }

編輯:我剛剛看到您要求反轉(zhuǎn) char[] 中的每個單詞,您可能想在第一句話中澄清這一點(diǎn)


去做這個; 我建議您使用String::split將字符串拆分為 string[] 并將String::toCharArray其更改為字符數(shù)組。雖然這確實(shí)創(chuàng)建了新的數(shù)組


查看完整回答
反對 回復(fù) 2022-06-30
?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個贊

有一個算法,如下,

  1. 最初,將給定字符串的單個單詞一一反轉(zhuǎn),對于提供的示例"Perfect Makes Practice",在反轉(zhuǎn)單個單詞之后,字符串應(yīng)該是“tcefreP sekaM ecitcarP”。

  2. "Practice Makes Perfect"在上面的示例中,從頭到尾反轉(zhuǎn)整個字符串以獲得所需的輸出。

更多檢查Reverse words in a given string。


查看完整回答
反對 回復(fù) 2022-06-30
  • 4 回答
  • 0 關(guān)注
  • 252 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號