面试:字符串: 字符交替
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)); } }
相关文章推荐
- 面试:字符串: 提取单词(2)
- C#130问,初级程序员的面试宝典
- 面试:字符串:产生括号
- 剑指offer-面试题8:旋转数组中的最小数字
- 面试题:不用第三变量交换ab值
- 剑指Offer----面试题26:复杂链表的复制
- 面试中常见链表问题13:回文链表
- 链表面试题之合并有序的两个线性表-递归和非递归的方法
- 奋斗吧,程序员——第五十二章 我欲与君相知,长命无绝衰
- Java程序员必须掌握的排序算法Java实现整合二 :选择排序
- 面试中常见链表问题12:单链表反转(递归)
- 黑马程序员:为苹果与iOS开发者的前景正名
- 面试中常见链表问题11:在链表中删除给定元素值的节点
- 面试中常见链表问题10:交叉链表的第一个公共节点
- 黑马程序员:iOS开发行业为何“大不如前”
- 面试中常见链表问题9:对单链表进行插入排序
- 面试中常见链表问题8:重排链表
- 【LeetCode】Best Time to Buy and Sell Stock 程序员炒股 part.3
- 面试中常见链表问题7:反转链表2
- Java陷阱一箩筐----面试题集