您的位置:首页 > 职场人生

面试:字符串: 字符交替

2016-06-06 17:57 260 查看

题目

给定两个字符串,大于出所有由这两字符交替组成的字符串。

要求维持原来字符的顺序不变

算法

例如:输入“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));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: