剑指offer面试题28-字符串的排列
来源:互联网 发布:淘宝怎么用余额宝分期 编辑:程序博客网 时间:2024/05/18 03:20
题目:
/**
* 输入一个字符串,打印出该字符串中字符的所有排列。<br/>
* 例如输入字符串abc,则打印出由字符串abc所能排列出来的所有字符串abc,acb,bca,cab和cba。
* */
这里用递归比较好:
第一个是a,那么剩下的就问bc的排列有多少种
第一个是b,剩下的问ac
第一个是c,剩下的问ab
那么方法就有了:
当前这个数分别与他后面的数交换位置,然后求后面的有多少中排列。
代码:
package com.aii.algorithm;public class Permutation {/** * 输入一个字符串,打印出该字符串中字符的所有排列。<br/> * 例如输入字符串abc,则打印出由字符串abc所能排列出来的所有字符串abc,acb,bca,cab和cba。 * */public void permutate(char[] str) {if (str == null) {return;}// 先判断空,然后再由permutate方法操作// 第二个参数是当前的字符的角标permutate(str, 0);}private void permutate(char[] str, int index) {// 此次递归结束标记,即到了str的最大长度,index==str.lengthif (index == str.length) {for (int i = 0; i < str.length; i++) {System.out.print(str[i]);}System.out.println();return;}// 从i=index到i=str.length-1为止// index和i交换位置,然后查找子串,递归for (int i = index; i < str.length; i++) {char tmp = str[index];str[index] = str[i];str[i] = tmp;permutate(str, index + 1);}}}
0 0
- 剑指offer面试题 字符串的排列
- 剑指offer面试题28字符串的所有排列permutation
- [剑指offer][面试题28]字符串的排列
- 【剑指offer】面试题28:字符串的排列
- 剑指Offer:面试题28 字符串的排列
- 剑指offer 面试题28—字符串的排列
- 《剑指Offer》面试题28:字符串的排列
- 《剑指Offer》学习笔记--面试题28:字符串的排列
- 剑指offer--面试题28:字符串的排列--Java实现
- 剑指offer--面试题28:字符串的排列--Java实现
- 【剑指Offer学习】【面试题28 :字符串的排列】
- 剑指offer面试题28-字符串的排列
- 剑指offer-面试题28:字符串的排列
- 剑指offer 面试题28:字符串的排列
- 剑指offer之面试题28:字符串的排列
- 剑指offer之面试题28字符串的排列
- 剑指Offer----面试题28:字符串的排列 & 去重
- 剑指offer面试题28:字符串的排列
- 《HTTP权威指南》阅读笔记(七)
- 最长上升子序列、最长下降子序列的DP算法由O(n^2)到O(nlogn)算法
- php/mysql实现搜索功能
- Html5拖放小例
- 过去是行不通的
- 剑指offer面试题28-字符串的排列
- 通过网络挖掘检测谣言和误信息(2015)
- 快速排序-QuickSort
- java中String 字符串中类的使用
- 从今天起开始认真学习C++primer plus
- 关于cocoapods中的一些细节问题
- mac os x使用Git简易入门教程
- Bug 9935857 - LOB indexes are missing from DBA_OBJECTS
- Google APAC 2016 University Graduates Test Round A解题报告