Chồng chéo css

Thuật toán Knuth-Morris-Pratt là một phương pháp tốt để tìm kiếm một chuỗi bên trong một chuỗi khác [vì tôi đã tìm thấy DNA, tôi đoán bạn muốn điều này để mở rộng hàng hóa?]

Nội dung chính Hiển thị

  • Làm thế nào để xác định chuỗi chồng chéo của Python?
  • Làm thế nào để bạn tìm thấy khoảng thời gian chồng chéo trong Python?
  • Làm thế nào để bạn đếm số lượng chuỗi con trong một chuỗi trong Python?
  • Làm thế nào để tôi tìm thấy trong Python?

# Knuth-Morris-Pratt string matching
# David Eppstein, UC Irvine, 1 Mar 2002

from __future__ import generators

def KnuthMorrisPratt[text, pattern]:

    '''Yields all starting positions of copies of the pattern in the text.
Calling conventions are similar to string.find, but its arguments can be
lists or iterators, not just strings, it returns all matches, not just
the first one, and it does not need the whole text in memory at once.
Whenever it yields, it will have read the text exactly up to and including
the match that caused the yield.'''

    # allow indexing into pattern and protect against change during yield
    pattern = list[pattern]

    # build table of shift amounts
    shifts = [1] * [len[pattern] + 1]
    shift = 1
    for pos in range[len[pattern]]:
        while shift = 0 and pattern[matchLen] != c:
            startPos += shifts[matchLen]
            matchLen -= shifts[matchLen]
        matchLen += 1
        if matchLen == len[pattern]:
            yield startPos

Liên kết nơi tôi có mã KMP Python [và tích hợp, sẽ nhanh hơn cho các vấn đề nhỏ vì hằng số thời gian chạy]

Để có biểu hiện Cận huyết, hãy sử dụng bảng tiền tố và băm các cửa sổ của chuỗi của bạn dưới dạng số nguyên cơ sở 4 [trong sinh học, bạn gọi chúng là K-MERS hoặc Oligos]. ;

Chúc may mắn

chỉnh sửa. Ngoài ra còn có một thủ thuật hay, bạn sắp xếp danh sách chứa mọi tiền tố [tổng n] trong chuỗi đầu tiên và mọi tiền tố [tổng n] trong chuỗi thứ hai. Nếu họ chia sẻ phần tiếp theo theo chung nhất, thì họ phải liền kề trong danh sách sắp xếp, vì vậy hãy tìm phần tử từ chuỗi khác gần nhất trong danh sách sắp xếp, và sau đó lấy tiền tố dài nhất hoàn tất . . ] Ngoài ra còn có một mẹo hay khi bạn sắp xếp một danh sách chứa mọi tiền tố [tổng n] trong chuỗi đầu tiên và mọi tiền tố [tổng n] trong chuỗi thứ hai. Nếu chúng chia sẻ chuỗi con chung lớn nhất, thì chúng phải liền kề trong danh sách đã sắp xếp, vì vậy hãy tìm phần tử từ chuỗi khác gần nhất trong danh sách đã sắp xếp, sau đó lấy tiền tố dài nhất khớp hoàn toàn. . ]

Làm thế nào để bạn đếm số lượng chuỗi con trong một chuỗi trong Python?

Chức năng Python String Count [] là một hàm có sẵn trong ngôn ngữ lập trình Python trả về số lần xuất hiện của một chuỗi con trong chuỗi đã chọn. Tham số. Hàm đếm [] có một lực lượng bắt buộc và hai tham số tùy chọn

Xin lưu ý rằng công cụ vấn đề có thể nhắm mục tiêu các chuỗi con 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ố tố

& nbsp;
For example,

Đầu vào.  

  . [a, b, c], [a, bc], [ab, c], [abc]Đầu ra. [A, B, C], [A, BC], [AB, C], [ABC]

 

  .   . A B C D

  . [a, b, c, d], [a, b, cd], [a, bc, d], [a, bcd], [ab, c, d], [ab, cd], [abc, D . [A, B, C, D], [A, B, CD], [A, BC, D], [A, BCD], [AB, C, D], [AB, CD], [ABC, D

Thực hiện 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 từng tiền tố str[0, i] của từng người. 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 trích đơ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ý, vui lòng thêm chuỗi đầu 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;không gian tên 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 đã chọn

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

        bộ&kết hợp]bộ&combinations]

{

& nbsp; // if all characters of the input string are processed,

& nbsp; // add the output string to result

    nếu[str. length[]==0]if [str. độ dài[]==0]

    {{

        đầu ra vectơ[chuỗi con];vectơ output[substring];

        kết hợp. chèn[đầu ra];kết hợp. chèn[đầu ra];

        return;return;

    }}

& nbsp; // append each prefix `str[0, i]` to the output string and recur for

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

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

Chủ Đề