假设:
String s1="13579";
String s2="2468";
然后输出为123456789
这是我的代码:
public class JoinString {
public static void main(String[] args) {
String s1 = "13579";
String s2 = "2468";
for (int i = 0; i < s1.length(); i++) {
for (int j = i; j < s2.length(); j++) {
System.out.print(s1.charAt(i) + "" + s2.charAt(j));
break;
}
}
}
}
答案 0 :(得分:3)
StringBuilder buf = new StringBuilder();
for (int i = 0; i < Math.max(s1.length(), s2.length()); i++) {
if (i < s1.length()) {
buf.append(s1.charAt(i));
}
if (i < s2.length()) {
buf.append(s2.charAt(i));
}
}
final String result = buf.toString();
你只需要一个循环。此外,您可以使用StringBuilder
类来逐个字符地构建字符串。
答案 1 :(得分:3)
这个小技巧怎么样:
String s1 = "13579";
String s2 = "2468";
String s3 = (s1 + s2).codePoints() // stream of code points
.sorted()
// collect into StringBuilder
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(s3); // 123456789
答案 2 :(得分:2)
实现这一目标的一种简单方法是执行以下操作:
String s1 = "13579";
String s2 = "2468";
char[]result = (s1+s2).toCharArray();
Arrays.sort(result);
System.out.println(result);
<强>输出:强>
123456789
答案 3 :(得分:1)
你只需要像这样组合两个循环的逻辑(如果你想用这种方式构建一个字符串,就使用StringBuilder)。
String s1 = "13579";
String s2 = "2468";
int length = Math.max(s1.length(), s2.length());
for (int i = 0; i < length; i++) {
if(i < s1.length())
System.out.print(s1.charAt(i));
if(i < s2.length())
System.out.print(s2.charAt(i));
}
答案 4 :(得分:0)
与@Roman Puchovskiy相似,这是一种不使用StringBuilder
的方法。
String s1 = "abcde";
String s2 = "defgh";
String combined = "";
int length = s1.length() > s2.length() ? s1.length() : s2.length(); //Finds the longest length of the two, to ensure no chars go missing
for(int i = 0 ; i < length ; i++) {
if(i < s1.length()) { // Make sure there is a char in s1 where we're looking.
combined += s1.charAt(i);
}
if(i < s2.length()) { // Same with s2.
combined += s2.charAt(i);
}
}
combined
成为组合字符串的位置。 ("adbecfdgeh"
)。
希望这有帮助!
答案 5 :(得分:0)
与合并排序中的合并方法类似。
如果将字符串转换为char数组,以便随机访问元素是恒定的时间,那么它也会更好。 因为charAt具有O(n)时间复杂度。
@AfterTest
}