[英]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.