Hướng dẫn cyclic string python - trăn chuỗi tuần hoàn

Tôi là một lập trình viên mới bắt đầu và tôi đang cố gắng tìm sự thay đổi theo chu kỳ của chuỗi. Một sự thay đổi theo chu kỳ của một chuỗi có được bằng cách di chuyển các ký tự từ đầu chuỗi đến cuối chuỗi. Ví dụ, sự thay đổi theo chu kỳ của ABCDE là: ABCDE, BCDEA, CDEAB, DEABC, EABCD. Đầu vào sẽ bao gồm chính xác hai dòng chỉ chứa chữ hoa. Dòng đầu tiên sẽ là văn bản t và dòng thứ hai sẽ là chuỗi S.

Show

    Đầu ra Có nếu văn bản, t, chứa một sự thay đổi theo chu kỳ của chuỗi, S. Nếu không, đầu ra không.

    Đầu vào mẫu:

    ABCCDEABAA
    ABCDE
    

    Đầu ra cho đầu vào mẫu:

    yes
    

    Tom Karzes

    20.4K2 Huy hiệu vàng17 Huy hiệu bạc37 Huy hiệu đồng2 gold badges17 silver badges37 bronze badges

    3

    Vì vậy, về cơ bản, bạn có thể nối chuỗi S vào chính nó và hãy gọi chuỗi này S2

    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    

    Vì độ dài của chuỗi S là 5, bạn sẽ phải kiểm tra xem

    yes
    
    1 có tồn tại trong
    yes
    
    2 hay không.

    Mã số

    t = 'ABCCDEABAA'
    s = 'ABCDE'
    s2 = s + s
    n = len(s)
    
    for i in range(n):
        flag = False
        if s2[i:i+n] in t:
            flag = True
    
        print(f"Checking for {s2[i:i+n]:s} in T = {flag}")
    

    Đầu ra

    Checking for ABCDE in T = False
    Checking for BCDEA in T = False
    Checking for CDEAB in T = True
    Checking for DEABC in T = False
    Checking for EABCD in T = False
    

    Độ phức tạp về thời gian:

    yes
    
    3 :
    yes
    
    3

    Đã trả lời ngày 19 tháng 3 lúc 8:31Mar 19 at 8:31

    DollarakshaydollarakshayDollarAkshay

    2.0741 Huy hiệu vàng19 Huy hiệu bạc38 Huy hiệu đồng1 gold badge19 silver badges38 bronze badges

    Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    1. Bàn luận
    2. Đưa ra một chuỗi kích thước n, viết các chức năng để thực hiện các hoạt động sau trên chuỗi.

    Examples:

    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"

    Trái (hoặc ngược chiều kim đồng hồ) xoay chuỗi đã cho bằng các phần tử d (trong đó dWe have existing solution for this problem please refer Left Rotation and Right Rotation of a String link. We will solve this problem quickly in python using String Slicing. Approach is very simple,

    1. Phải (hoặc theo chiều kim đồng hồ) xoay chuỗi đã cho bằng các phần tử d (trong đó dfirst & second, for Left rotation Lfirst = str[0 : d] and Lsecond = str[d :]. For Right rotation Rfirst = str[0 : len(str)-d] and Rsecond = str[len(str)-d : ].
    2. Phương pháp 1: Chúng tôi có giải pháp hiện tại cho vấn đề này, vui lòng tham khảo xoay bên trái và xoay bên phải của một liên kết chuỗi. Chúng tôi sẽ giải quyết vấn đề này một cách nhanh chóng trong Python bằng cách sử dụng cắt chuỗi. Cách tiếp cận rất đơn giản,second + first accordingly.

    Implementation:

    Python3

    Chuỗi riêng biệt trong hai phần thứ nhất và thứ hai, cho xoay bên trái lfirst = str [0: d] và lsecond = str [d:]. Đối với vòng quay bên phải rfirst = str [0: len (str) -d] và rsecond = str [len (str) -d:].

    Bây giờ kết hợp hai phần này thứ hai + đầu tiên cho phù hợp.

    yes
    
    4
    yes
    
    5
    yes
    
    6
    yes
    
    7

    yes
    
    8
    yes
    
    9
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    yes
    
    6
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    2223
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    4

    yes
    
    8
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    6
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    yes
    
    6
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    9

    yes
    
    8
    t = 'ABCCDEABAA'
    s = 'ABCDE'
    s2 = s + s
    n = len(s)
    
    for i in range(n):
        flag = False
        if s2[i:i+n] in t:
            flag = True
    
        print(f"Checking for {s2[i:i+n]:s} in T = {flag}")
    
    1
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    yes
    
    6__22223
    t = 'ABCCDEABAA'
    s = 'ABCDE'
    s2 = s + s
    n = len(s)
    
    for i in range(n):
        flag = False
        if s2[i:i+n] in t:
            flag = True
    
        print(f"Checking for {s2[i:i+n]:s} in T = {flag}")
    
    6
    t = 'ABCCDEABAA'
    s = 'ABCDE'
    s2 = s + s
    n = len(s)
    
    for i in range(n):
        flag = False
        if s2[i:i+n] in t:
            flag = True
    
        print(f"Checking for {s2[i:i+n]:s} in T = {flag}")
    
    7
    t = 'ABCCDEABAA'
    s = 'ABCDE'
    s2 = s + s
    n = len(s)
    
    for i in range(n):
        flag = False
        if s2[i:i+n] in t:
            flag = True
    
        print(f"Checking for {s2[i:i+n]:s} in T = {flag}")
    
    8
    yes
    
    6
    Checking for ABCDE in T = False
    Checking for BCDEA in T = False
    Checking for CDEAB in T = True
    Checking for DEABC in T = False
    Checking for EABCD in T = False
    
    0
    Checking for ABCDE in T = False
    Checking for BCDEA in T = False
    Checking for CDEAB in T = True
    Checking for DEABC in T = False
    Checking for EABCD in T = False
    
    1____42

    yes
    
    8
    Checking for ABCDE in T = False
    Checking for BCDEA in T = False
    Checking for CDEAB in T = True
    Checking for DEABC in T = False
    Checking for EABCD in T = False
    
    4
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    yes
    
    6__22222222222222222222222

    yes
    
    8
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    5
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    6
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    7
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    8

    yes
    
    8
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    5
    Left Rotation  : eksforGeeksGe 
    Right Rotation : ksGeeksforGee
    1
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    7
    Left Rotation  : eksforGeeksGe 
    Right Rotation : ksGeeksforGee
    3

    yes
    
    8
    Left Rotation :  ksGeeksforGee
    Right Rotation :  ksGeeksforGee
    4
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    Left Rotation :  ksGeeksforGee
    Right Rotation :  ksGeeksforGee
    6

    yes
    
    8
    yes
    
    5
    yes
    
    6S0

    Output:

    Left Rotation  : eksforGeeksGe 
    Right Rotation : ksGeeksforGee

    Left Rotation  : eksforGeeksGe 
    Right Rotation : ksGeeksforGee
    4
    Left Rotation  : eksforGeeksGe 
    Right Rotation : ksGeeksforGee
    5
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    Left Rotation  : eksforGeeksGe 
    Right Rotation : ksGeeksforGee
    8
    We use extended string to rotate the string. We will solve this problem quickly in python by slicing extended string. Approach is very simple,

    yes
    
    8
    yes
    
    6
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    Left Rotation :  ksGeeksforGee
    Right Rotation :  ksGeeksforGee
    2
    Now print this string. 

    Implementation:

    Python3

    Phương pháp 2: Chúng tôi sử dụng chuỗi mở rộng để xoay chuỗi. Chúng tôi sẽ giải quyết vấn đề này một cách nhanh chóng trong Python bằng cách cắt chuỗi mở rộng. Cách tiếp cận rất đơn giản,

    Sử dụng chuỗi mở rộng extend_str, cho vòng quay bên trái lfirst = extended_str [n: l1+n]. Đối với vòng quay bên phải rfirst = str [l1-n: l2-n] .now in chuỗi này. & Nbsp;

    yes
    
    4 S2

    yes
    
    8S4
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0 S6
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    7 S8

    yes
    
    8S20
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    t = 'ABCCDEABAA'
    s = 'ABCDE'
    s2 = s + s
    n = len(s)
    
    for i in range(n):
        flag = False
        if s2[i:i+n] in t:
            flag = True
    
        print(f"Checking for {s2[i:i+n]:s} in T = {flag}")
    
    7S23

    yes
    
    8S25
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    t = 'ABCCDEABAA'
    s = 'ABCDE'
    s2 = s + s
    n = len(s)
    
    for i in range(n):
        flag = False
        if s2[i:i+n] in t:
            flag = True
    
        print(f"Checking for {s2[i:i+n]:s} in T = {flag}")
    
    7S28

    yes
    
    8
    yes
    
    9
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    yes
    
    08
    Checking for ABCDE in T = False
    Checking for BCDEA in T = False
    Checking for CDEAB in T = True
    Checking for DEABC in T = False
    Checking for EABCD in T = False
    
    1
    yes
    
    10____41
    yes
    
    04

    yes
    
    8
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    5
    t = 'ABCCDEABAA'
    s = 'ABCDE'
    s2 = s + s
    n = len(s)
    
    for i in range(n):
        flag = False
        if s2[i:i+n] in t:
            flag = True
    
        print(f"Checking for {s2[i:i+n]:s} in T = {flag}")
    
    8
    yes
    
    16
    yes
    
    17

    yes
    
    8
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    5
    Left Rotation  : eksforGeeksGe 
    Right Rotation : ksGeeksforGee
    1
    Input : s = "GeeksforGeeks"
            d = 2
    Output : Left Rotation  : "eksforGeeksGe" 
             Right Rotation : "ksGeeksforGee"  
    
    
    Input : s = "qwertyu" 
            d = 2
    Output : Left rotation : "ertyuqw"
             Right rotation : "yuqwert"
    7
    Left Rotation  : eksforGeeksGe 
    Right Rotation : ksGeeksforGee
    3

    yes
    
    8
    Left Rotation :  ksGeeksforGee
    Right Rotation :  ksGeeksforGee
    4
    s = 'ABCDE'
    s2 = s + s    # s2 = 'ABCDEABCDE'
    
    0
    Left Rotation :  ksGeeksforGee
    Right Rotation :  ksGeeksforGee
    6

    yes
    
    8
    yes
    
    5
    yes
    
    6S0

    Đầu ra

    Left Rotation :  ksGeeksforGee
    Right Rotation :  ksGeeksforGee