颠倒字符串的顺序

时间:2014-03-01 14:28:48

标签: java string reverse

所以我对基本java的工作原理仍然不稳定,这是我写的一个方法,但是并不完全理解它是如何解释的?

它应该取s值并以相反的顺序返回。

编辑:主要是for循环让我感到困惑。

所以说我输入“12345”我希望我的输出为“54321”

Public string reverse(String s){
 String r = "";
 for(int i=0; i<s.length(); i++){
   r = s.charAt(i) + r;
}
  return r;
}

5 个答案:

答案 0 :(得分:4)

我们对String a的最后一个索引执行for循环,将添加将索引i的carater添加到String s中, add 这里是一个串联:

示例

String z="hello";
String x="world";

==&GT; x+z="world hello" #different to z+x ="hello world"

适用于您的情况:

String s="";
String a="1234";
s=a.charAt(0)+s ==> s= "1" + "" = "1" ( + : concatenation )
s=a.charAt(1)+s ==> s='2'+"1" = "21" ( + : concatenation )
s=a.charAt(2)+s ==> s='3'+"21" = "321" ( + : concatenation )
s=a.charAt(3)+s ==> s='3'+"321" = "4321" ( + : concatenation )

等。

public String reverse(String s){
         String r = ""; //this is the ouput , initialized to " "
         for(int i=0; i<s.length(); i++){  
           r = s.charAt(i) + r; //add to String r , the caracter of index i 
        }
          return r;
        }

答案 1 :(得分:3)

此代码的作用如下

创建一个新变量r =“”;

然后循环输入lenght中的字符串,它在r的开头添加循环的当前字符。

  • i = 0)r =“1”
  • i = 1)r =“21”
  • i = 2)r =“321”
  • i = 3)r =“4321”
  • i = 4)r =“54321”

答案 2 :(得分:3)

进入循环时,r。中有空字符串 Now r=""

在第一次迭代中,您将获取第一个字符(i = 0)并将r附加到其中。
r = "1" + "";
Now r=1

在第二次迭代中,您将获取第二个字符(i = 1)并将r附加到其中 r = "2" + "1";
Now r=21

您可以在这样的纸张上追踪执行情况,然后您就可以轻松了解正在发生的事情。

答案 3 :(得分:1)

该方法正在做的是从字符串s中获取每个字符并将其放在新字符串r的前面。重命名变量可能有助于说明这一点。

public String reverse(String s){
    String alreadyReversed = "";
    for(int i=0; i<s.length(); i++){
        //perform the following until count i is as long as string s
        char thisCharacterInTheString = s.charAt(i); // for i==0 returns first 
                                                     // character in passed String
        alreadyReversed = thisCharacterInTheString + alreadyReversed;
    }
    return alreadyReversed;
}

所以在for循环的第一次迭代中alreadyReversed等于1 +本身(一个空字符串)。

在第二次迭代alreadyReversed等于2 +本身(1)。
然后3 +本身(21)。
然后4 + 321
然后5 + 4321

答案 4 :(得分:0)

返回问题陈述(获取输入字符串并以相反的顺序生成输出字符串)。然后考虑如何执行此操作(而不是如何编写Java代码来执行此操作)。

您可能会提出两种选择:

  1. 从输入字符串的后面开始,一次获取一个字符并形成一个新字符串(从而颠倒其顺序)。
  2. 从字符串的前面开始,获取一个字符。然后对于每个下一个字符,将它放在您目前创建的所有字符的前面。
  3. 您的伪代码结果可能类似于以下

    选项1
        let l =输入字符串的长度     将输出字符串设置为“”     而l&gt; 0       将输入字符串的“第l”字符添加到输出字符串       从l

    中减去1

    选项2 留下作为提问者的练习。

    然后你会考虑如何编写Java来处理你的算法。你会发现有几种方法可以获得字符串的“第l”字符。首先,在Java中,长度为l的字符串在位置0到l-1中具有字符。您可以使用string.charAt(loc)string.substring(loc,loc+1)来获取位置loc

    中的角色