Python求解一个字符串所有的子串算法

给定一个字符串,s = “abcdef",求出它的所有子字符串

分析:

  1. 先来分析此例中”abcdef"的长度为6。它的子字符串长度len(sub_s)可能为1,2,3…,5,6;
  2. 然后再分析每种长度的字符串的个数,分别对应着6,5…,3,2,1;
  3. 因此可以看出"abcdef"的子字符串的个数为:6+5+4+3+2+1 = 21

思路:用算法解决的话,外层循环次数等于len(string)大小,如果用i表示外层每次循环大小(i = 0,1,2,3,4,5),而内层循环次数j进行len(s)- i 循环(j = 6,5,4,3,2,1)。因此循环体产生的次数为(len(s)*len(s)+1)/2,这个算法的时间复杂度为O(N2)

class Solution:
	def calculateSubString(self,s):
		for i in range(len(s)):
			for j in range(len(s) - i)):
				print s[j:j+i+1] # i+1依次取到 1,2,3,4...表示对字符串截取所进行的步长。

obj = Solution()
obj.calculateSubString('abcdef')
#a,b,c,d,e,f,ab,bc,cd,de,ef,abc,bcd,cde,def,abcd,bcde,cdef,abcde,bcdef,abcdef

你可能感兴趣的:(python,算法)