不使用.reverse方法和for循环反转一个字符串?

时间:2014-01-31 22:08:55

标签: java reverse

今天我的讲师给了我这个代码,我对它很感到困惑:

** String removeAll(char c, String s) {

    String to_return = "";

    while(true) {
        if (s.equals(""))
            return to_return;

        // at this point s is not ""
        char c2 = s.charAt(0);
        if (c2 != c)
        {
            to_return += c2;
        }

        s = s.substring(1);
    }

    return to_return; // won't be reached
}

print(removeAll('o',"hello"));**

这是我对代码的插入:

  1. 如果s.equals nothing则返回to_return<非常不愿意。
  2. c2 =等于字符串s的第一个字符
  3. 如果c2不等于c,则to_return + = c2<不完全明白

2 个答案:

答案 0 :(得分:1)

它接受字符串s(方法的参数)并查看第一个字符。如果它不是c字符,则将其添加到返回字符串的 end ,然后从s中删除第一个字符。

您剩下的是相同的字符串,但没有任何字符c的实例。

s = "hello"
return = ""

第一个循环:

s = "hello" (set c2 to first char)
c2 = "h" (h is not 'o')
return = "h" (append c2 to end)

第二个循环:

s = "ello"
c2 = "e"
return = "he"

第三循环:

s = "llo"
c2 = "l"
return = "hel"

第四循环:

s = "lo"
c2 = "l"
return = "hell"

第五循环:

s = "o"
c2 = "o" ("o" matches 'o' character)
return = "hell" (c2 isn't appended)

第六循环:

s = "" (loop ends)

while循环中的行:

if(s.equals("")) return to_return;

表示如果s是空字符串,则返回“return_to”的值,该值结束循环并退出方法。

由于while()循环永远不会结束,所以永远不会到达最后一个return语句。

答案 1 :(得分:-1)

  1. 如果字符串's'为null,则方法s.equals(“”)返回null,程序仅在此终止。

  2. 通过c.charAt(0),您将获得该字符串的第一个字符。

  3. 如果字符串's'的第一个字符不是'c',则另一个字符的ASCII值增加1.例如 - 如果字符串's'的第一个字符是'a' ',然后它将返回'b'作为答案。