Hướng dẫn python shift string characters - chuỗi ký tự dịch chuyển python

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.

Đầ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

    Is it possible to __ilshift a string in Python?

    My python 2.7.2 reports no __ilshift or __irshift in str. Also, if you are trying to shift a string by a certain number of characters, then you shouldn't be shifting the variable you call other. You should be shifting self by other many characters. That being said, you're probably better off naming other as n or some such.

    What is a string in Python?

    String là kiểu dữ liệu đặc biệt trong Python, và nó là bất biến (immuable). Mỗi string được có một địa chỉ lưu trữ trên bộ nhớ (memory). Tất cả các thao tác với string đều tạo ra một đối tượng khác. Chẳng hạn như việc bạn muốn nối (concatenate) một string vào một string khác, hành động này tạo ra một string khác trên bộ nhớ.

    What is an escape character in Python?

    Và vì vậy nó có một số đặc điểm sau: Nếu bạn khai báo 2 biến kiểu string có giá trị như nhau, chúng sẽ cùng trỏ đến một string thực sự trên bộ nhớ (memory). Các toán tử với string sẽ tạo ra string mới trên bộ nhớ (memory). Các ký tự thoát (Escape characters) là các ký tự đặc biệt trong Python. Nó là các ký tự không thể in ấn (non-printable).

    How do I split a string between characters in Python?

    Thư viện tiêu chuẩn Python đi kèm với một hàm để chia các chuỗi: hàm chia ().Hàm này có thể được sử dụng để chia tách giữa các ký tự.Hàm chia () có hai tham số.Đầu tiên được gọi là dấu phân cách và nó xác định ký tự nào được sử dụng để phân chia chuỗi.Python standard library comes with a function for splitting strings: the split () function. This function can be used to split strings between characters. The split () function takes two parameters. The first is called the separator and it determines which character is used to split the string.