如何實現兩個字符串的交叉合併功能java實現

如何實現兩個字符串的交叉合併功能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)  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章