Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách hoán đổi ký tự đầu tiên hoặc bắt đầu và ký tự cuối cùng hoặc kết thúc của một chuỗi trong python. Chúng tôi sẽ lấy chuỗi làm đầu vào từ người dùng. Chương trình sẽ yêu cầu người dùng nhập vào một chuỗi, hoán đổi ký tự đầu và ký tự cuối và in ra chuỗi mới sửa đổi
Chuỗi Python là bất biến, tôi. e. chúng tôi không thể sửa đổi một chuỗi. Nếu muốn hoán đổi ký tự đầu và ký tự cuối, chúng ta không thể đổi trực tiếp các ký tự trong chuỗi. Chúng ta cần tạo một chuỗi khác bằng cách thay đổi các ký tự
Chúng tôi sẽ sử dụng cắt chuỗi để giải quyết vấn đề này. Cắt chuỗi là cách để lấy tất cả các ký tự của chuỗi trong một phạm vi. Chuỗi là một dãy các ký tự và mỗi ký tự có chỉ số riêng. Chỉ mục bắt đầu từ ‘0’ đến ‘độ dài của chuỗi - 1’. Ví dụ: đối với chuỗi 'world', chỉ số của 'w' là '0', chỉ số của 'o' là '1', v.v.
Chúng ta có thể cắt một chuỗi bằng cách chỉ định các số chỉ mục được phân tách bằng dấu hai chấm như '[x. y]’. Ví dụ: đối với chuỗi ‘str’,‘str[2. 4]' sẽ cắt chuỗi từ chỉ mục '2' sang chỉ mục '3'. Lưu ý rằng giá trị thứ hai không phải là chỉ số cuối cùng. Nếu chúng ta chuyển '0' làm giá trị đầu tiên và độ dài của chuỗi làm giá trị thứ hai, nó sẽ trả về cho chúng ta cùng một chuỗi
str = "world"
print[str[0:3]]
print[str[1:4]]
Nó sẽ in
Trong ví dụ trên, câu lệnh in đầu tiên đang in chuỗi con từ chỉ số '0' đến '2'. Câu lệnh in thứ hai đang in từ chỉ mục '1' đến '3'
Chỉ mục đầu tiên và các giá trị chỉ mục cuối cùng là tùy chọn. Nếu chúng tôi không cung cấp chỉ mục đầu tiên, nó sẽ xem xét nó từ chỉ mục '0' và nếu chúng tôi không cung cấp chỉ mục thứ hai, nó sẽ đưa tất cả các ký tự đến cuối bắt đầu từ chỉ mục bắt đầu
str = "world"
print[str[:3]]
print[str[1:]]
Trong ví dụ này, chỉ mục đầu tiên trống cho câu lệnh in đầu tiên và chỉ mục thứ hai trống cho câu lệnh in thứ hai
Chúng ta cũng có thể sử dụng chỉ mục phủ định với chuỗi trong python. Ký tự cuối cùng có thể được truy cập với chỉ số '-1', ký tự cuối cùng thứ hai với '-2', v.v. Ví dụ: đối với chuỗi 'world', 'd' có chỉ số -1, 'l' có chỉ số -2, 'r' có chỉ số -3, v.v.
Chỉ số phủ định cũng có thể được sử dụng để cắt một chuỗi. Để hoán đổi ký tự đầu tiên và ký tự cuối cùng của chuỗi, chúng ta sẽ sử dụng phép cắt với chỉ số âm
chương trình Python
str = input["Enter a string : "]
new_str = str[-1:] + str[1:-1] + str[:1]
print[new_str]
Enter a string : python
nythop
Enter a string : sample
eampls
Enter a string : one line
ene lino
Enter a string : hello world
dello worlh
Giải trình
Chương trình ví dụ trên được sử dụng để hoán đổi ký tự đầu tiên và ký tự cuối cùng của chuỗi 'str'. Chúng tôi đã sử dụng dòng dưới đây để hoán đổi các ký tự trong chuỗi
str[-1:] + str[1:-1] + str[:1]
Hãy phá vỡ nó. str[-1. ]. Nó sẽ trả về tất cả các ký tự từ chỉ mục -1 đến chỉ mục cuối cùng. Vì -1 là chỉ số cuối cùng của một chuỗi, nên nó sẽ thực sự trả về ký tự cuối cùng của chuỗi đã cho str
str[1. -1]. Nó sẽ trả về tất cả các ký tự bắt đầu từ chỉ số 1 đến ký tự trước ký tự có chỉ số -1. i. e. tất cả các ký tự từ chỉ số 1 đến ký tự thứ hai cuối cùng
str[. 1]. Nó sẽ trả lại các ký tự bắt đầu từ chỉ mục bắt đầu cho ký tự trước chỉ mục 1, i. e. nó sẽ trả về ký tự đầu tiên
Như bạn có thể thấy, nối tất cả các ký tự trên sẽ cho chúng ta chuỗi cần thiết. Đối với chuỗi xin chào,
str[-1:] = 'o'
str[1:-1] = 'ell'
str[:1] = 'h'
Phần kết luận
Cắt chuỗi là một cách tuyệt vời để chọn bất kỳ phần nào của chuỗi trong python. Cắt lát có sẵn trong nhiều ngôn ngữ lập trình khác. Tiết kiệm rất nhiều thời gian và công sức cho chúng ta. Lập chỉ mục phủ định là một điều tiện dụng hơn trong chuỗi python. Hãy thử chạy chương trình bằng python3 và để lại một bình luận bên dưới nếu bạn có bất kỳ câu hỏi nào
Trong bài viết này, chúng ta sẽ tìm hiểu cách trả về một chuỗi có hoán đổi ký tự?
Câu hỏi
Nếu bạn được cung cấp một chuỗi, hãy trả về một chuỗi mới sao cho các ký tự đầu tiên và cuối cùng đã được hoán đổi. Ngoài ra, bạn nên xem xét các trường hợp sau
Cho một xâu S có độ dài N, hai số nguyên B và C, nhiệm vụ là duyệt các ký tự bắt đầu từ đầu, hoán đổi một ký tự với ký tự sau C đặt từ nó, i. e. hoán đổi ký tự tại vị trí i và [i + C]%N. Lặp lại quá trình này B lần, tiến lên một vị trí tại một thời điểm. Nhiệm vụ của bạn là tìm Chuỗi cuối cùng sau khi B hoán đổi
ví dụ.
Input : S = "ABCDEFGH", B = 4, C = 3; Output: DEFGBCAH Explanation: after 1st swap: DBCAEFGH after 2nd swap: DECABFGH after 3rd swap: DEFABCGH after 4th swap: DEFGBCAH Input : S = "ABCDE", B = 10, C = 6; Output : ADEBC Explanation: after 1st swap: BACDE after 2nd swap: BCADE after 3rd swap: BCDAE after 4th swap: BCDEA after 5th swap: ACDEB after 6th swap: CADEB after 7th swap: CDAEB after 8th swap: CDEAB after 9th swap: CDEBA after 10th swap: ADEBC
Khuyến khích. Vui lòng thử cách tiếp cận của bạn trên {IDE} trước, trước khi chuyển sang giải pháp
Cách tiếp cận ngây thơ.
- Đối với các giá trị lớn của B, cách tiếp cận ngây thơ là lặp B lần, mỗi lần hoán đổi ký tự thứ i với ký tự [i + C]%N-th sẽ dẫn đến thời gian CPU cao
- Mẹo để giải bài toán này là quan sát chuỗi kết quả sau mỗi N lần lặp, trong đó N là độ dài của chuỗi S
- Một lần nữa, nếu C lớn hơn hoặc bằng N, thì nó thực sự bằng phần còn lại của C chia cho N
- Ở đây, hãy coi C nhỏ hơn N
Phương pháp tiếp cận hiệu quả.
- Nếu chúng ta quan sát chuỗi được hình thành sau mỗi N lần lặp và hoán đổi liên tiếp [hãy gọi nó là một lần lặp đầy đủ], chúng ta có thể bắt đầu nhận được một mẫu
- Chúng ta có thể thấy rằng chuỗi được chia thành hai phần. phần đầu tiên có độ dài C bao gồm các ký tự C đầu tiên của S và phần thứ hai bao gồm các ký tự còn lại
- Hai phần được xoay bởi một số nơi. Phần đầu tiên được xoay sang phải bởi [N % C] vị trí mỗi lần lặp đầy đủ
- Phần thứ hai được xoay trái bởi vị trí C sau mỗi lần lặp đầy đủ
- Chúng ta có thể tính số lần lặp đầy đủ f bằng cách chia B cho N
- Vì vậy, phần đầu tiên sẽ được xoay trái bởi [ N % C ] * f. Giá trị này có thể vượt ra ngoài C và do đó, nó thực sự là [ [ N % C ] * f ] % C, i. e. phần đầu tiên sẽ được xoay bởi [ [ N % C ] * f ] % C chỗ còn lại
- Phần thứ hai sẽ được xoay trái theo vị trí C * f. Vì, giá trị này có thể vượt quá độ dài của phần thứ hai là [ N – C ], nó thực sự là [ [ C * f ] % [ N – C ] ], i. e. phần thứ hai sẽ được xoay theo [ [ C * f ] % [ N – C ] ] vị trí còn lại
- Sau f lần lặp đầy đủ, có thể vẫn còn một số lần lặp lại để hoàn thành bước lặp B. Giá trị này là B % N nhỏ hơn N. Chúng ta có thể làm theo cách tiếp cận ngây thơ trên các lần lặp lại còn lại này sau f lần lặp đầy đủ để nhận được chuỗi kết quả
Thí dụ
s = ABCDEFGHIJK;
các bộ phận. ABCDEFGHIJK
sau 1 lần lặp đầy đủ. DABC IJKEFGH
sau 2 lần lặp đầy đủ. CDAB FGHIJKE
sau 3 lần lặp đầy đủ. BCDA JKEFGHI
sau 4 lần lặp đầy đủ. ABCD GHIJKEF
sau 5 lần lặp đầy đủ. DABC KEFGHIJ
sau 6 lần lặp đầy đủ. CDAB HIJKEFG
sau 7 lần lặp đầy đủ. BCDA EFGHIJK
sau 8 lần lặp đầy đủ. ABCDIJKEFGH
Dưới đây là việc thực hiện phương pháp
Python3
# Python3 program to find new after swapping
# characters at position i and i + c
# b times, each time advancing one
# position ahead
# Method to find the required string
def
swapChars[s, c, b]:
CADEFGHIJKB0
CADEFGHIJKB1_______7_______2
CADEFGHIJKB1_______7_______4_______7_______5
CADEFGHIJKB6_______7_______7
CADEFGHIJKB0
CADEFGHIJKB1_______41_______0
CADEFGHIJKB1_______41_______2
CADEFGHIJKB1_______41_______4
CADEFGHIJKB1_______41_______6
CADEFGHIJKB5
# Python3 program to find new after swapping
6# Python3 program to find new after swapping
9 CADEFGHIJKB4
CADEFGHIJKB0
CADEFGHIJKB1_______42_______3
# characters at position i and i + c
4CADEFGHIJKB5
CADEFGHIJKB5
# characters at position i and i + c
7# characters at position i and i + c
8# characters at position i and i + c
9
# b times, each time advancing one
0____43_______1
# b times, each time advancing one
0____43_______3 # b times, each time advancing one
4
# characters at position i and i + c
9
CADEFGHIJKB1_______43_______7_______7_______5
# b times, each time advancing one
9# position ahead
0# position ahead
1 # position ahead
2CADEFGHIJKB1_______44_______4_______7_______5
# position ahead
6# Python3 program to find new after swapping
9 CADEFGHIJKB4
CADEFGHIJKB0
CADEFGHIJKB1_______45_______1
CADEFGHIJKB1____45_______3
CADEFGHIJKB1_______45_______5
CADEFGHIJKB5
7_______42_______7
9# Method to find the required string
0 # Method to find the required string
1_______41_______9 # Method to find the required string
3# Method to find the required string
4 # Method to find the required string
5CADEFGHIJKB0
CADEFGHIJKB1____46_______8
CADEFGHIJKB1____47_______0
CADEFGHIJKB1_______47_______2
CADEFGHIJKB5
def
4_______46_______0 # Method to find the required string
1# Python3 program to find new after swapping
9 # Method to find the required string
3# Method to find the required string
4 # Method to find the required string
5