【发布时间】:2016-01-04 18:33:27
【问题描述】:
我的任务是创建一个内存高效方法,该方法采用由数字组成的String 并删除所有开头的零。
例如“001112”变成“1112”。
public static String hej (String v)
{
StringBuilder h = new StringBuilder(v);
while(true)
{
if (h.charAt(0) == '0')
h.deleteCharAt(0);
else
break;
}
return h.toString();
}
这是我的解决方案。当然它可以工作,但我的问题是,使用StringBuilder 是内存效率高还是使用字符串本身更有效,例如v.substring()? 找不到太多关于什么更有效的信息。如果有人有一些文档的链接,请分享它们。
干杯
【问题讨论】:
-
当您到达一个非 '0' 的字符时,您可以使用子字符串返回字符串的其余部分,这样您就不必创建 stringbuilder 对象。
-
StringBuilder 类是处理字符串时最推荐的方法。
-
@user3284549 是的,我知道。虽然问题仍然存在。哪一个会更有效率? StringBuilder 似乎更能适应变化,但它是否比你建议的方式消耗更多的空间?
-
您可以随时查看两者的实现吗? jvm源代码可在线获取。
-
最有效的方法是使用
input.substring(<first index of nonzero char>),使用简单的for循环预先计算索引