簡體   English   中英

Java-理解數組逆向邏輯

[英]Java- understanding the logic of reverse in array

我有一個動態字符串類,它有一個字符數組text ,它有一個reverse()方法可以反轉數組的內容。

但我不明白算法如何工作的邏輯。 你能不能幫我介紹一下代碼?

public void reverse() {
  char tmp;
    for(int i=0; i<length/2; i++) {
      tmp = text[i];
      text[i] = text[length-1-i];
      text[length-1-i] = tmp;
    }
 } 

你應該像這樣思考和調試循環中的所有步驟

Char[] text ='abcd'
text.length = 4

第一步,

temp = 'a' 
text[0] = text[3] // text[0] = 'd'
text[3] = temp // text[3] = 'a'
// your text = 'dbca'

第二步,

temp = 'b'
text[1] = 'c'
text[2] = 'b'
// your text = 'dcba'

您可以找到兩次反轉的文本 -> size/2

讓我們拿起一根繩子,試着把它倒過來。 字符串是“編碼器”

length = 字符串長度 = 5(在這種情況下)

length/2 = 5/2 = 2(它不會是 2.5,因為我們將兩個整數相除)所以 for 循環從 0 到 2 (0,1, NOT 2)

i = 0 時:

temp = 'c' text[0]現在將保存text[5 - 1 - 0]

所以現在文本是'roder'(中間答案)

text[4]現在將保存 'c' 所以現在文本是 'rodec'

i = 1 時:

temp = 'o' text[1]現在將保存text[5 - 1 - 1]

所以現在文本是“redec”(中間答案)

text[3]現在將保留 'o'

所以現在文本是“redoc”

for 循環直到length/2的原因是,我們從兩端交換字符,並在中間停止。

我希望這有幫助。 現在嘗試使用更長的字符串並執行相同的步驟。

暫無
暫無

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

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