Hướng dẫn find all non overlapping substrings python - tìm tất cả các chuỗi con không chồng chéo python

Đưa ra một chuỗi, tìm tất cả các kết hợp của các chuỗi con không chồng chéo của nó.

Xin lưu ý rằng vấn đề cụ thể nhắm mục tiêu các chuỗi con tiếp giáp [nghĩa là, chiếm các vị trí liên tiếp] và vốn đã duy trì thứ tự của các yếu tố.

& nbsp; Ví dụ,
For example,

Đầu vào: & nbsp; ABC ABC

& nbsp; Đầu ra: [a, b, c], [a, bc], [ab, c], [abc]Output: [A, B, C], [A, BC], [AB, C], [ABC]

 

& nbsp; Đầu vào: & nbsp; A B C DInput:  ABCD

& nbsp; Đầu ra: [a, b, c, d], [a, b, cd], [a, bc, d], [a, bcd], [ab, c, d], [ab, cd], [abc , D], [ABCD]Output: [A, B, C, D], [A, B, CD], [A, BC, D], [A, BCD], [AB, C, D], [AB, CD], [ABC, D], [ABCD]

Thực hành vấn đề này

Ý tưởng là sử dụng đệ quy để giải quyết vấn đề này. Đối với một chuỗi đã cho str có độ dài n, hãy xem xét mỗi tiền tố str[0, i] của từng người một. Chúng tôi nối các tiền tố vào chuỗi đầu ra bằng cách đặt nó trong dấu ngoặc đơn và tái diễn cho chuỗi con còn lại str[i+1, n-1]. Nếu mọi chuỗi con của chuỗi ban đầu được xử lý, hãy thêm chuỗi đầu ra vào kết quả.

Sau đây là việc thực hiện C ++, Java và Python của ý tưởng:

C++


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

#bao gồm

#bao gồm

#bao gồm

#bao gồm

usingnamespacestd;namespace std;

// Tìm tất cả các kết hợp của các chuỗi con không chồng chéo của một chuỗi đã cho

voidfindCombinations[stringstr,vector&substring,findCombinations[string str,vector&substring,

        set&combinations]set&combinations]

{

& nbsp; & nbsp; & nbsp; & nbsp; // Nếu tất cả các ký tự của chuỗi đầu vào được xử lý,// if all characters of the input string are processed,

& nbsp; & nbsp; & nbsp; & nbsp; // Thêm chuỗi đầu ra để kết quả// add the output string to result

    if[str.length[]==0]if [str.length[]==0]

    {{

        vectoroutput[substring];vector output[substring];

        combinations.insert[output];combinations.insert[output];

        return;return;

    }}

& nbsp; & nbsp; & nbsp; & nbsp; // nối mỗi tiền tố `str [0, i]` vào chuỗi đầu ra và tái diễn cho// append each prefix `str[0, i]` to the output string and recur for

& nbsp; & nbsp; & nbsp; & nbsp;// remaining substring `str[i+1, n-1]`

    for[inti=0;ifor [inti=0;i

Bài Viết Liên Quan

Chủ Đề