我正在阅读字符串反转:
第一个代码:
public static String reverse(String s) {
String rev = "";
for (int i = s.length() - 1; i >= 0; i--)
rev += s.charAt(i);
return rev;
}
第二段代码:
public static String reverse(String s) {
StringBuilder rev = new StringBuilder();
for (int i = s.length() - 1; i >= 0; i--)
rev.append(s.charAt(i));
return rev.toString();
}
提到使用字符串我们有二次时间并使用字符串构建器我们有线性时间。
在第9页上,关于使用字符串的后缀的arrry在这里更好。
在上述两种情况下,我都没有得到作者的结论。
任何人都可以帮助我吗?
答案 0 :(得分:0)
在第一段代码中:
public static String reverse(String s) {
String rev = "";
for(int i = s.length() - 1; i >= 0; i--)
rev += s.charAt(i);
return rev;
}
每次执行rev += s.charAt(i);
时,都会创建StringBuilder
,然后附加rev
的内容,然后附加s.charAt(i)
,然后StringBuilder
转换为 String 。那将是s.length() - 1
StringBuilder
s和相同数量的字符串。
在第二个版本中:
public static String reverse(String s) {
StringBuilder rev = new StringBuilder();
for(int i = s.length() - 1; i >= 0; i--)
rev.append(s.charAt(i));
return rev.toString();
}
只有一个StringBuilder
和一个字符串。
关于你的第二次困惑,请你详细说明一下吗?很难说出作者的意思。
答案 1 :(得分:0)
类“java.lang.StringBuffer”包含方法“reverse”,您可以使用它代替自编代码。