Java-理解数组中反向的逻辑

问题描述 投票:-1回答:2

我有一个动态字符串类,它有一个char数组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;
    }
 } 
java arrays reverse
2个回答
0
投票

让我们拿一个字符串并试图扭转它。字符串是“编码器”

length = string的长度= 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的原因是因为,我们正在从两端交换字符,并在中间停止。

我希望这有帮助。现在尝试使用更长的字符串并按照相同的步骤操作。


0
投票

你应该像这样思考和调试循环中的所有步骤

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

© www.soinside.com 2019 - 2024. All rights reserved.