Misalkan kita memiliki string huruf kecil s dan daftar bilangan bulat lain yang disebut shift yang panjangnya sama dengan panjang s. Di sini setiap elemen dalam shifts[i] menunjukkannya untuk menggeser huruf i + 1 pertama dari s dengan posisi shifts[i]. Jika menggeser menyilang 'z' maka akan dibungkus menjadi 'a'. Kita harus menemukan string yang dihasilkan setelah menerapkan shift ke s
Jadi, jika inputnya seperti s = "tomat" shift = [2, 5, 2, 3, 7, 4], maka outputnya adalah "qjcoes" jadi, setelah menggeser karakter pertama 2 tempat, itu akan menjadi 't . string sekarang akan menjadi "atmato" seperti itu akhirnya string akan menjadi "qjcoes"
Untuk mengatasi ini, kami akan mengikuti langkah-langkah ini −
- awal. = ASCII dari "a"
- res. = daftar ASCII dari (i - start) untuk setiap i dalam s
- untuk i dalam rentang ukuran shift - 2 hingga 0, kurangi 1, lakukan
- pergeseran[i]. = pergeseran[i] + pergeseran[i + 1]
- untuk i dalam rentang 0 hingga ukuran s - 1, lakukan
- C. =(res[i] + shift[i]) mod 26
- res[i]. = karakter dengan ASCII (c + mulai)
- gabungkan huruf res menjadi string dan kembali
Contoh
Mari kita lihat implementasi berikut untuk mendapatkan pemahaman yang lebih baik −
def solve(s, shifts): start = ord("a") res = [ord(i) - start for i in s] for i in range(len(shifts) - 2, -1, -1): shifts[i] += shifts[i + 1] for i in range(len(s)): c = (res[i] + shifts[i]) % 26 res[i] = chr(c + start) return "".join(res) s = "tomato" shifts = [2, 5, 2, 3, 7, 4] print(solve(s, shifts))Memasukkan
[2, 1], 3, 2_Keluaran
qjcoesTag sudah ada dengan nama cabang yang disediakan. Banyak perintah Git menerima nama tag dan cabang, jadi membuat cabang ini dapat menyebabkan perilaku yang tidak diharapkan. Anda yakin ingin membuat cabang ini?
Diberi sebuah String, geser balik setiap karakter sesuai dengan posisi abjadnya dengan K, termasuk pergeseran siklik
Memasukkan. test_str = 'bccd', K = 1
Keluaran. abc
Penjelasan. 1 alfabet sebelum b adalah 'a' dan seterusnyaMemasukkan. test_str = 'bccd', K = 2
Keluaran. zaab
Penjelasan. 2 huruf sebelum b adalah 'z' (dibulatkan) dan seterusnya.
metode. Menggunakan maketrans() + upper() + daftar pemahaman + translate() + slicing
Dalam hal ini, kami membuat tabel terjemahan untuk setiap karakter ke versi K-nya menggunakan maketrans() dan slicing. Upper() digunakan untuk menangani semua karakter huruf besar, translate() digunakan untuk melakukan terjemahan sesuai dengan tabel terjemahan pencarian yang dibuat oleh maketrans()
Python3
# Python3 code to demonstrate working of
# Reverse Shift characters by K_
# using maketrans() + upper() + list comprehension + translate() + slicing
# initializing string_
test_str= 'GeeksForGeeks'
# printing original String
print# Python3 code to demonstrate working of0# Python3 code to demonstrate working of1 # Python3 code to demonstrate working of2 # Python3 code to demonstrate working of3# Python3 code to demonstrate working of4
# Python3 code to demonstrate working of5
# Python3 code to demonstrate working of6= # Python3 code to demonstrate working of8
# Python3 code to demonstrate working of9= # Reverse Shift characters by K1
# Reverse Shift characters by K_2
# Reverse Shift characters by K3= # Reverse Shift characters by K5
# Reverse Shift characters by K_6
# Reverse Shift characters by K7= # Python3 code to demonstrate working of3# using maketrans() + upper() + list comprehension + translate() + slicing0# using maketrans() + upper() + list comprehension + translate() + slicing1# using maketrans() + upper() + list comprehension + translate() + slicing2# Python3 code to demonstrate working of2 # using maketrans() + upper() + list comprehension + translate() + slicing4# using maketrans() + upper() + list comprehension + translate() + slicing1# using maketrans() + upper() + list comprehension + translate() + slicing6
# using maketrans() + upper() + list comprehension + translate() + slicing_7
# using maketrans() + upper() + list comprehension + translate() + slicing8= # Python3 code to demonstrate working of3# initializing string1# using maketrans() + upper() + list comprehension + translate() + slicing1# using maketrans() + upper() + list comprehension + translate() + slicing_5_______2# Python3 code to demonstrate working of2 # initializing string5# using maketrans() + upper() + list comprehension + translate() + slicing1# using maketrans() + upper() + list comprehension + translate() + slicing6