给定两个字符串A和B,创建一个由A的第一个字符组成的较大字符串,B的第一个字符,A的第二个字符,B的第二个字符,依此类推。任何剩余的字符都会在结果的末尾出现。
public String mixString(String a, String b)
{
String str = "";
int len = 0;
if (a.length() >= b.length())
{
len = a.length();
} else
len = b.length();
for (int i = 0; i < len; i++)
{
if (i < a.length())
{
str += a.charAt(i);
}
if (i < b.length())
{
str += b.charAt(i);
}
}
return str;
}
答案 0 :(得分:5)
你有一个可行的方法,但你可以通过使用一个带有两个计数器的循环来显着简化它:
int apos = 0, bpos = 0;
while (apos != a.length() || bpos != b.length()) {
if (apos < a.length()) m += a.charAt(apos++);
if (bpos < b.length()) m += b.charAt(bpos++);
}
在此循环中,您将通过推进apos
,bpos
或两者来“逐步”完成每一步。一旦字符串用完字符,其对应的pos
就会停止前进。当pos
到达目的地时,循环结束。
注意:当您需要在循环中追加字符串时,请使用StringBuilder
。
答案 1 :(得分:1)
我使用Merge排序方法来解决这个问题。首先,我将两个字符串转换为各自的字符数组,然后合并两个数组并将数组转换回字符串。您可以在下面找到我的代码,我已经测试了代码并且它正在运行。如果您有任何疑问,请告诉我。
public String merge(String leftStr, String rightStr) {
char[]left = leftStr.toCharArray();
char[]right = rightStr.toCharArray();
int nL = left.length;
int nR= right.length;
char[] mergeArr= new char[nL+nR];
int i=0,j=0,k=0;
int temp =0;
while(i<nL && j<nR){
if (temp==0){
mergeArr[k]=left[i];
i++;
temp =1;
}else{
mergeArr[k]=right[j];
j++;
temp=0;
}
k++;
}
while(i<nL){
mergeArr[k]=left[i]; k++; i++;
}
while(j<nR){
mergeArr[k]=right[j]; k++; j++;
}
return new String(mergeArr);
}
答案 2 :(得分:0)
使用StringBuilder
和char[]
的另一种方法。只要第一个比第二个长,就可以工作,这是由第一个方法保证的。
public String mixString(String a, String b) {
if (b.length() > a.length())
return mixString(new StringBuilder(b), a.toCharArray(), 0);
return mixString(new StringBuilder(a), b.toCharArray(), 1);
}
public String mixString(StringBuilder ab, char[] b, int start) {
int i = 0;
for (char c : b)
ab.insert(i++*2 + start, "" + c);
return ab.toString();
}
答案 3 :(得分:0)
这是我的尝试::
public static String mixString1(String a,String b){
String result="";
int startValue = 0;
int increment = 0;
if(a.length()<=b.length()){
for(int i=0;i<a.length();i++){
result = result+a.charAt(i)+b.charAt(i);
}
}
else if(a.length()>=b.length()){
for(int i=0;i<b.length();i++){
result = result+a.charAt(i)+b.charAt(i);
}
}
if(a.length()<b.length()){
startValue= a.length();
increment = b.length();
}
else {
startValue= b.length();
increment = a.length();
}
if(a.length()<b.length()){
for(int j=startValue;j<increment;j++){
result = result+b.charAt(j);
}
}
else if(a.length()>b.length()){
for(int j=startValue;j<increment;j++){
result = result+a.charAt(j);
}
}
return result;
}
答案 4 :(得分:0)
public String mixString(String a, String b) {
String c="";
String left="";
int min;
if(a.length()>b.length()) {
min=b.length();
left=a.substring(b.length(),a.length());
}
else {
min=a.length();
left=b.substring(a.length(),b.length());
}
for(int i=0;i<min;i++) {
c +=a.substring(i,i+1)+b.substring(i,i+1);
}
return c+left;
}
答案 5 :(得分:0)
这是我的方法,欢迎反馈
void printPattern(String str, String str1){
int length1 = str.length();
int length2 = str1.length();
int i =0;
String output ="";
while(length1 > 0 && length2 > 0){
output += (str.charAt(i)) ;
output += (str1.charAt(i)) ;
length1-- ; length2-- ; i++;
}
System.out.println(output);
}