如何實現兩個字符串的交叉合併功能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)