微软面试100题-70
2016-05-14 23:00
549 查看
70.给出一个函数来输出一个字符串的所有排列(经典字符串问题)。
take abc for example.
f(n) = a + f(n-1);
f(n) = b + f(n-1); arr[0] and arr[1] exchange
f(n) = c + f(n-1); arr[0] and arr[2] exchange
70.给出一个函数来输出一个字符串的所有排列(经典字符串问题)。
take abc for example.
f(n) = a + f(n-1);
f(n) = b + f(n-1); arr[0] and arr[1] exchange
f(n) = c + f(n-1); arr[0] and arr[2] exchange
package com.algo.ms; public class CharPremutation70 { public void print(char[] arr, int start){ if(start == arr.length -1){ for(int i = 0; i< arr.length ; i++){ System.out.print(arr[i]); } System.out.println(); }else { for(int i = start; i < arr.length; i++){ if(start == i){ this.print(arr, start+1); }else{ swap(arr, start, i); this.print(arr, start + 1); swap(arr, start, i); } } } } public void swap(char[] arr, int i, int j){ char temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void main(String[] args) { // TODO Auto-generated method stub String str = "abcd"; char[] arr = str.toCharArray(); CharPremutation70 charPrem = new CharPremutation70(); charPrem.print(arr, 0); } }
相关文章推荐
- 微软面试100题-69
- Java程序员的日常 —— static的用法讲解实践
- 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)
- 机器学习常见面试题
- 软件众包 业余主义的复兴
- iOS面试题 汇总
- 软件众包 业余主义的复兴
- Java多线程和并发基础面试问答
- Android 面试题
- Java 常用排序算法/程序员必须掌握的 8大排序算法
- 65 个职场很有技巧的回答
- Java多线程和并发基础面试问答
- web前端面试题集锦
- java面试
- 阿里巴巴前端岗位面试题
- 【36】按层打印二叉树
- iOS_面试题
- 程序员常用网站
- 事务-程序员的必经之路
- 软考程序员随笔-----7