如何实现两个字符串的交叉合并功能java实现
针对于如何实现两个字符串的交叉合并功能如ABCDE,abc实现后的结果为AaBbCcDE这种效果,其他不多说看下面的代码吧
package cn.itcast.core.test;
import com.alibaba.druid.sql.visitor.functions.Char;
/**
* 实现两个字符串交叉功能
*
* @author qdh
*
*/
public class CharToChar {
public static void main(String[] args) {
String a = "ABCDE";
String b = "abcde";
System.out.println(toChar(a, b));
System.out.println("第二种:" + merge(a, b));
}
public static String toChar(String a, String b) {
// 将字符串转换为字符数组
char[] aArray = a.toCharArray();
char[] bArray = b.toCharArray();
// 定义一个字符缓冲流
StringBuffer stringBuffer = new StringBuffer();
// 循环字符数组将两个字符数组中的元素进行交换位置
for (int i = 0; i < aArray.length; i++) {
// 将第一个字符数组添加的字符缓冲区
stringBuffer.append(aArray[i]);
// 如果i<bArray.length将bArray添加到字符串缓冲区
if (i < bArray.length) {
stringBuffer.append(bArray[i]);
}
}
// 返回交叉后的结果
return stringBuffer.toString();
}
public static String merge(String a, String b) {
// 将接收的字符串转换为字符数组
char[] aChar = a.toCharArray();
char[] bChar = b.toCharArray();
//定义一个长度
int mClength = aChar.length * 2;
//定义一个字符数组并给一个长度
char[] mixChar = new char[mClength];
for (int i = 0; i < aChar.length; i++) {
//将字符数组aChar中的元素赋予给新的字符数组
mixChar[i * 2] = aChar[i];
//将字符数组bChar中的元素赋予给新的字符数组中的第二个位置
mixChar[i * 2 + 1] = bChar[i];
}
return String.valueOf(mixChar);
}
}
python版:
def charTochar(s1,s2):
L1=list(s1)
L2=list(s2)
L3=[]
for i in range(len(L1)):
L3.append(L1[i])
if i<len(L2):
L3.append(L2[i])
return "".join(L3)
a=raw_input("请输入字符串a:")
b=raw_input("请输入字符串b:")
print charTochar(a, b)
上面方法有bug,可以使用如下方法
import java.util.ArrayList;
import java.util.List;
//交叉合并字符串代码
public class CharToChar2 {
public static void main(String[] args) {
String a[] ={"a","b","c","d","e","f","g"};
String b[] ={"1","2","3","4","5"};
CombineTwoArray(a, b);
System.out.println(CombineTwoArray(a, b));
}
public static List<String> CombineTwoArray(String[] first, String[] second) {
List<String> outlist = new ArrayList<String>();
int index = 0;
while (index < first.length && index < second.length) {
outlist.add(first[index]);
outlist.add(second[index]);
++index;
}
if (index >= first.length) {
for (int i = index; i < second.length; i++) {
outlist.add(second[i]);
}
} else {
for (int i = index; i < first.length; i++) {
outlist.add(first[i]);
}
}
return outlist;
}
}
python版
def charTochar(s1,s2):
L1=list(s1)
L2=list(s2)
L3=[]
index=0
while (index < len(s1) and index < len(s2)):
L3.append(s1[index]);
L3.append(s2[index]);
index +=1
if index >=len(s1):
for i in range(index,len(s2)):
L3.append(s2[i])
else:
for i in range(index,len(s1)):
L3.append(s1[i])
return "".join(L3)
a=raw_input("请输入字符串a:")
b=raw_input("请输入字符串b:")
print charTochar(a, b)