一个程序,它接受字符串的前两个字符并将它们添加到字符串的前面和后面。哪个版本更好?
public String front22(String str) {
if(str.length()>2) return str.substring(0,2)+str+str.substring(0,2);
return str+str+str;
}
或
public String front22(String str) {
// First figure the number of chars to take
int take = 2;
if (take > str.length()) {
take = str.length();
}
String front = str.substring(0, take);
return front + str + front;
}
前者让我觉得更优雅。后者更容易理解。任何其他改进的建议都非常受欢迎!
答案 0 :(得分:1)
第一个选项的问题,主要是因为string
是不可变的。 [编辑。]正如@Pshemo正确指出的那样,我的陈述不清楚。引用@Pshemo,"executing same substring twice is inefficient when we can reuse result from first substring"
。
StringBuilder sb = new StringBuilder(str);
CharSequence seq = sb.subSequence(0,2);
sb.insert(0, seq);
sb.append(seq);
return sb.toString();