面试:字符串: 字符交替

题目

给定两个字符串,大于出所有由这两字符交替组成的字符串。
要求维持原来字符的顺序不变


算法

例如:输入“AB”和“CD”,则打印
ABCD
ACBD
ACDB
CABD
CADB
CDAB
(1) s1和s2均无字符可用,则返回空串
(2) 其中一个空字符可用,s1剩余字符为空,那么把s2的剩余字符附在已经得到的字符串的后面,输出
(3)其他,或者从s1取字符,或者从s2取字符,保存已得到的字符,然后递归调用函数


import java.util.*;

public class Solution{
    public void printInterleavings(String s1,String s2){
        printInterleavings(s1,s2,"");
    }
    private void printInterleavings(String s1,String s2,String soFar){
        if((s1==null ||s1.length()==0) && (s2==null ||s2.length()==0))
            return;

        if(s1==null || s1.length()==0){
            //s1为空,输出结果加上s2
            System.out.println(soFar  +s2);
            return;
        }

        if(s2==null||s2.length()==0){
            //s2为空,输出结果加上s1
            System.out.print(soFar+s1);
            return;
        }
        //加上s1的一个字符
        printInterleavings(s1.substring(1),s2,soFar+s1.charAt(0));
        //加上s2的一个字符
        printInterleavings(s1,s2.substring(1),soFar+s2.charAt(0));
    }

    }

你可能感兴趣的:(面试(java))