这是我应该解决的条件:
给定两个字符串 a 和 b,创建一个更大的字符串,由 a 的第一个字符、b 的第一个字符、a 的第二个字符、b 的第二个字符组成,依此类推。任何剩余的字符都会放在结果的末尾。
这是我在付出巨大努力后设法孵化的工作代码:
public String mixString(String a, String b) {
int cut = Math.abs(a.length() - b.length());
String end = "";
if (cut == 0){
for (int i = 0 ; i < a.length() ; i ++){
end = end + a.charAt(i) + b.charAt(i);
}
}
if (a.length() > b.length()){
for (int i = 0 ; i < b.length() ; i ++){
end = end + a.charAt(i) + b.charAt(i);
}
end += a.substring (a.length() - cut);
}
if (a.length() < b.length()){
for (int i = 0 ; i < a.length() ; i ++){
end = end + a.charAt(i) + b.charAt(i);
}
end += b.substring (b.length() - cut);
}
return end;
}
提前谢谢你。
很
抱歉,我刚刚发布的代码不一致。这是我的代码的正确版本:
public String mixString(String a, String b) {
int cut = Math.abs(a.length() - b.length());
String end = "";
if (cut == 0){
for (int i = 0 ; i < a.length() ; i ++){
end = end + a.charAt(i) + b.charAt(i);
}
}
if (a.length() > b.length()){
for (int i = 0 ; i < b.length() ; i ++){
end = end + a.charAt(i) + b.charAt(i);
}
end += a.substring (a.length() - cut);
}
if (a.length() < b.length()){
for (int i = 0 ; i < a.length() ; i ++){
end = end + a.charAt(i) + b.charAt(i);
}
end += b.substring (b.length() - cut);
}
return end;
}
private String mix(String a, String b) {
//init result data is empty (StringBuilder is good but JVM will do it)
String end = "";
//Travel each character of two input string in same time
for (int i = 0; i < Math.max(a.length(), b.length()); i++) {
//append each character of string "a" first. If index is out of lengh just append empty
end += i < a.length() ? a.charAt(i) : "";
//append each character of string "b" secound. If index is out of lengh just append empty
end += i < b.length() ? b.charAt(i) : "";
}
return end;
}
我认为这对你来说已经足够了。