[英]Reverse a String without .reverse method and for loops?
今天我的讲师给了我这段代码,对此我感到有些困惑:
** 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"));**
这是我对代码的解释:
它以字符串s
(方法的参数),并着眼于第一个字符。 如果不是c
字符,则将其添加到返回字符串的末尾 ,然后从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语句。
如果字符串“ s”为null,则方法s.equals(“”)返回null,程序仅在此处终止。
通过c.charAt(0),您将获得字符串的第一个字符。
如果字符串“ s”的第一个字符不是“ c”,则另一个字符的ASCII值加1。例如-如果字符串“ s”的第一个字符是“ a”,则它将返回'b'作为答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.