《程序员面试题精选》05.输出一个字符串的所有子串
2017-10-31 10:27
309 查看
题目:给定一个字符串,输出其所有子字符串,例如给定字符串abc,则输出 :a,b,c,d,ab,bc,cd,abc,bcd,abcd。用递归的思路就是先找所有以a开头的子串,然后再找以b开头的子串,直到d。其实用python解决非常省事,见下面的代码。
#!/usr/bin/env python # -*- coding: utf-8 -*- # Python 3.6 from itertools import accumulate def all_sub_string(a_string): if len(a_string) == 1: return [a_string] else: return list(accumulate(a_string)) + all_sub_string(a_string[1:]) print(all_sub_string('abcd')) # ['a', 'ab', 'abc', 'abcd', 'b', 'bc', 'bcd', 'c', 'cd', 'd']
注意python有默认递归1k层的限制,换成递推的写法也可以。
相关文章推荐
- 《程序员面试题精选》05.输出一个字符串的所有子串
- 递归问题之一:给定一字符串,输出字符串中所有字符子串的各种组合形式,长度为一个字符到字符串的长度,忽略排序
- 任意输入一个字符串,输出它的所有子串。Python练习(未考虑去重问题)
- 给定一个字符串S,求所有长度小于等于3的子串出现的次数,输出结果按出现次数从大到小
- 输入一个字符串,删除其中所有的数字,所有大写字母改成小写,其他不变,并输出
- 输出字符串所有组合(含有重复的字符)及输出其所有子串(含有重复的字符)
- 给定一个字符串,输出所有的排列组合方式
- 输入一个字符串,输出该字符串中字符的所有组合
- 已知一个字符串,输出它包含字符的所有排列(permutations)
- C#实现输入一个字符串输出该字符串字符的所有排列方式
- 给定一个字符串s,请计算输出含有连续两个s作为子串的最短字符串。
- 写一个函数,输出字符串中字符的所有排序。(比如:abc acb bac bca cab cba )
- 给定一个字符串,判断该字符串中是否包含某个子串.如果包含, 求出子串的所有出现位置
- 一个字符串中包含另一个字符串所有字符的最短子串
- 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
- 将字符串 “ hello word,你 好 世 界 ! ” 两端空格去掉并且将其中的其他所有空格替换成一个空格 输出结果为“hello word,你 好 世界”
- 编写函数fun(char *s),其功能是:把字符串中所有字符前移一个位置,串中的第1个字符移到最后。 例如,若输入字符串为:ABC123xyz ,则应输出字符串: BC123xyzA 。
- 给出一个函数来输出一个字符串的所有排列
- 给定一个字符串,字符串中的*可以替换成0或1,输出所有可能的结果
- 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。