博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php实现字符串的排列(交换)(递归考虑所有情况)
阅读量:6413 次
发布时间:2019-06-23

本文共 1700 字,大约阅读时间需要 5 分钟。

php实现字符串的排列(交换)(递归考虑所有情况)

一、总结

交换: 当有abc的时候,分别拿第一位和其它位交换,第一位固定,余下的位做递归,这样有考虑到所有情况,因为第一位只可能是所有的字母,那第一位依次和所有的位交换可以保证所有的位都可以出现在第一位,如果交换的时候要交换的字母和第一位字母相同,则不必交换

 

二、php实现字符串的排列

题目描述

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

输入描述:

输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

 

三、代码

如果字母不重复的话直接回溯解排列组合很好做

字母重复的话:可以交换字母的位置来得到所有情况

基于回溯法思想:当有abc的时候,分别拿第一位和其它位交换,第一位固定,余下的位做递归,这样有考虑到所有情况,因为第一位只可能是所有的字母,那第一位依次和所有的位交换可以保证所有的位都可以出现在第一位,如果交换的时候要交换的字母和第一位字母相同,则不必交换

 

 

代码一:java

1 import java.util.List; 2 import java.util.Collections; 3 import java.util.ArrayList; 4   5 public class Solution { 6     public static void main(String[] args) { 7         Solution p = new Solution(); 8         System.out.println(p.Permutation("abc").toString()); 9     }10  11     public ArrayList
Permutation(String str) {12         List
res = new ArrayList<>();13         if (str != null && str.length() > 0) {14             PermutationHelper(str.toCharArray(), 0, res);15             Collections.sort(res);16         }17         return (ArrayList)res;18     }19  20     public void PermutationHelper(char[] cs, int i, List
list) {21         if (i == cs.length - 1) {22             String val = String.valueOf(cs);23             if (!list.contains(val))24                 list.add(val);25         } else {26             for (int j = i; j < cs.length; j++) {27                 swap(cs, i, j);28                 PermutationHelper(cs, i+1, list);29                 swap(cs, i, j);30             }31         }32     }33  34     public void swap(char[] cs, int i, int j) {35         char temp = cs[i];36         cs[i] = cs[j];37         cs[j] = temp;38     }39 }

 

转载地址:http://uidra.baihongyu.com/

你可能感兴趣的文章
HTML --块
查看>>
在DLL中获取主进程窗口句柄
查看>>
基于消息队列的双向通信
查看>>
一个不错的loading效果
查看>>
高中学渣逆袭入“大学”:如今月收入达五位数
查看>>
Debian允许root用户登录
查看>>
C++ - this指针
查看>>
Google Test and Google Mock Introduction
查看>>
linux的文件系统
查看>>
上云利器,K8S应用编排设计器之快到极致
查看>>
袋鼠云服务案例系列 | 从DB2到MySQL,某传统金融平台的互联网转型之路
查看>>
RealServer配置脚本
查看>>
九月份技术指标 华为交换机的简单配置
查看>>
马哥linux作业--第八周
查看>>
dubbo01
查看>>
python 写json格式字符串到文件
查看>>
分布式文件系统MogileFS
查看>>
电力线通信载波模块
查看>>
linux vim详解
查看>>
Java23种设计模式案例:策略模式(strategy)
查看>>