反向字符串代码如何工作?

时间:2013-07-11 21:22:45

标签: java string reverse

任何人都可以解释这个程序是如何运作的。

public static void main(String args[]){
    String input ="***NGuyen**Van******A*******";
    String result ="";
    for( int i = 0 ; i < input.length() ; i++)
    {

            result =  input.charAt(i) + result ;

        }


    System.out.println(result);

}}

输出

*******A******naV**neyuGN***

2 个答案:

答案 0 :(得分:1)

从左到右(从低到高,0到长度)

获取字符

从右到左追加字符。

反转他们。

1 2 3
| | |
\ | /
  X
/ | \
3 2 1

第一次循环,它取'1'并将其放入字符串。

第二次循环,它取'2'并将其放在'1'左边的字符串中

通过循环的口渴时间,它需要'3'并将其置于'2'和'1'的左侧。

当我说“需要”时,我指的是代码:input.charAt(i)

请注意,由于i++

,每次循环时'i'会变大

答案 1 :(得分:0)

它实际上是一个编写得很糟糕的程序,它不断创建新的(不可变的)String对象,同时从左到右迭代input的字符,每次都将字符前加到result 。这是由代码input.charAt(i) + result完成的,它将字符放在前一个结果的前面。

更好的实现会使用StringBuilder(这是可变的)来避免过多的String创建。

像这样:

public static void main(String args[]) {
    String input = "***NGuyen**Van******A*******";
    StringBuilder builder = new StringBuilder();
    String result;
    for (int i = input.length() - 1; i >= 0; i--) {
        builder.append(input.charAt(i));
    }
    result = builder.toString();

    System.out.println(result);
}