获取字符串全排列 或者 只输出k个的组合

已知长度为n的字符串,获取所有可能的全排序 n!

def test(arr):
    length = len(arr)
    if length<=1:
        return arr
    res = []
    for i in range(length):
        temp = list.copy(arr)
        del(temp[i])
        res += [arr[i]+j for j in test(temp)]
    return res

print(test([‘a‘,‘b‘,‘c‘,‘d‘]))

  result:

G:\python\study>python hello.py
[‘abcd‘, ‘abdc‘, ‘acbd‘, ‘acdb‘, ‘adbc‘, ‘adcb‘, ‘bacd‘, ‘badc‘, ‘bcad‘, ‘bcda‘, ‘bdac‘, ‘bdca‘, ‘cabd‘, ‘cadb‘, ‘cbad‘, ‘cbda‘, ‘cdab‘, ‘cdba‘, ‘dabc‘, ‘dacb‘, ‘dbac‘, ‘dbca‘, ‘dcab‘, ‘dcba‘]

输出k个的排列组合,k不大于字符串长度 n!/(n-k)!

def test(arr,k):
    length = len(arr)
    if k<=1:
        return arr
    res = []
    for i in range(length):
        temp = list.copy(arr)
        del(temp[i])
        res += [arr[i]+j for j in test(temp,k-1)]
    return res

print(test([‘a‘,‘b‘,‘c‘,‘d‘],2))

  result:

G:\python\study>python hello.py
[‘ab‘, ‘ac‘, ‘ad‘, ‘ba‘, ‘bc‘, ‘bd‘, ‘ca‘, ‘cb‘, ‘cd‘, ‘da‘, ‘db‘, ‘dc‘]

时间: 2024-12-27 23:35:46

获取字符串全排列 或者 只输出k个的组合的相关文章

获取字符串 只定宽度内 所需的高度 方法二

/** 获取字符串 只定宽度内 所需的高度 circleOfFriendsModel.content:字符串内容 DEF_FontSize_12:字体大小 309:只定空间的大小 这里指容放字符串的 宽度 */ CGSize strSize = [circleOfFriendsModel.content sizeWithFont:DEF_FontSize_12 constrainedToSize:CGSizeMake(309, MAXFLOAT) lineBreakMode:UILineBrea

DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度

1.替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串.举例说明其功能:========================================= @echo off set aa=伟大的中国!我为你自豪! echo 替换前:%aa% echo 替换后:%aa:中国=中华人民共和国% echo aa = %aa% set "aa=%aa:中国=中华人民共和国%" echo aa = %aa% pause ==============================

获取字符串中某一个字段的数据,GetValueFromStr

gps数据格式为:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A* /********************************************************************** *版权所有 (C)2015, Wuyq. * *文件名称: GetValueFromStr.c *内容摘要:用于演示从gps数据字符串中获取相应的内容 *其它说明:无 *当前版本: V1.0 *作

【C语言】用指针数组完成:将若干字符串安字母顺序输出

//用指针数组完成:将若干字符串安字母顺序输出 #include <stdio.h> #include <string.h> void print(char * name[],int n) //char * name[],指针数组,每个数组元素是一个char*(即字符串)类型 { int i; for(i=0;i<n;i++) { printf("%s\n",name[i]); } } void sort(char *name[],int n) { cha

编程题:指针数组实现,将多个字符串按字母顺序输出。

#include<stdio.h> void sort(char *str[],int n) { char *temp;int i,j,k; for(i=0;i<n-1;i++) {k=1; for(j=i+1;j<n;j++) if(strcmp(str[k],str[j])>0) k=j; if(k!=i) {temp=str[i];str[i]=str[k];str[k]=temp;} } } void main() { int i,n=4; char *string[

java面试题 &quot;aababcabcdabcde&quot;,获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

题目:"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1) 刚开始可能对这题无从下手,现在就一步步分析 1:首先它是一个字符串,但是要对每个字符进行分析它出现的次数,那么肯定是要进行循环遍历,要进行遍历一般要么是集合,要么是数组,而在这里变成数组比较好, 2:变成数组后,我们可以用一个map集合存储字符和出现的次数也就是说key是Character,value是Integer,然后在遍历的时候拿key获取value值进行

linux shell 命令获取字符串/文件的MD5值

获取字符串的MD5值: 字符串"hello"的MD5: $ echo -n 'hello'|md5sum|cut -d ' ' -f1 得到的MD5值: 5d41402abc4b2a76b9719d911017c592 命令解释: md5sum: 显示或检查 MD5(128-bit) 校验和,若没有文件选项,或者文件处为"-",则从标准输入读取. echo -n : 不打印换行符. cut:  cut用来从标准输入或文本文件中剪切列或域.剪切文本可以将之粘贴到一个文

获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数

#region 函数:GetSubString() 作用:获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数 /// <summary> /// 获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数 /// </summary> /// <param name="strSub">输入中英混合字符串</param> /// <param name="start"

java &quot;aababcabcdabcde&quot;,获取字符串中每一个字母出现的次数

需求:"aababcabcdabcde",获取字符串中每一个字母出现的次数 分析: * A:定义一个字符串(可以改进为键盘录入) * B:定义一个TreeMap集合 * 键:Character * 值:Integer * C:把字符串转换为字符数组 * D:遍历字符数组,得到每一个字符 * E:拿刚才得到的字符作为键到集合中去找值,看返回值 * 是null:说明该键不存在,就把该字符作为键,1作为值存储 * 不是null:说明该键存在,就把值加1,然后重写存储该键和值 * F:定义字符