patternjavaMinor
Concatenating strings of equal length
Viewed 0 times
equallengthconcatenatingstrings
Problem
My problem is this: Given two strings, append them together and return the result. However, if the strings are different lengths, omit chars from the longer
Is there a way to do it without using of
String so it is the same length as the shorter String. So "Hello" and "Hi" yield "loHi". The strings may be any length. Is there a way to do it without using of
StringBuilder like me:public String equalConcatenation(String a, String b) {
if(a.length() > b.length()){
StringBuilder sb = new StringBuilder(a);
sb.delete(0, (a.length() - b.length()));
return sb.toString() + b;
}
StringBuilder sb = new StringBuilder(b);
sb.delete(0, (b.length() - a.length()));
return a + sb.toString();
}Solution
You're not using
I would write it this way instead, with no special cases:
I've chosen to make it a static method because it's purely a function of the two input strings, not using any object state.
StringBuilder effectively. If you already have sb, then why not do sb.append(b).toString() instead of sb.toString() + b? If you look at the generated bytecode for sb.toString() + b, you'll see that it actually makes another StringBuilder for you, like new StringBuilder(sb.toString()).append(b).toString().I would write it this way instead, with no special cases:
public static String equalConcatentation(String a, String b) {
int len = Math.min(a.length(), b.length());
return a.substring(a.length() - len) +
b.substring(b.length() - len);
}I've chosen to make it a static method because it's purely a function of the two input strings, not using any object state.
Code Snippets
public static String equalConcatentation(String a, String b) {
int len = Math.min(a.length(), b.length());
return a.substring(a.length() - len) +
b.substring(b.length() - len);
}Context
StackExchange Code Review Q#113709, answer score: 5
Revisions (0)
No revisions yet.