@jaccobtw, bạn không thể làm điều đó, vì trong Python, các chuỗi là bất biến, nghĩa là chúng không thể thay đổi được
Tuy nhiên, bạn có thể tạo một chuỗi mới bằng cách sử dụng toán tử +. Nó hoạt động với các chuỗi bằng cách nối các chuỗi lại với nhau, một quá trình được gọi là nối
my_str = "ac"
my_new_str = my_str + "c"
print[my_str]
print[my_new_str]
đầu ra
ac # original string unchanged
acc # new string
Nhiệm vụ là tìm tất cả các ký tự trùng lặp trong chuỗi và trả về các ký tự có số lần xuất hiện nhiều hơn 1
Chúng ta phải viết mã python để duyệt qua đầu vào chuỗi và kiểm tra sự xuất hiện lại của bất kỳ ký tự nào trong chuỗi đầu vào đã cho. Nếu một ký tự được lặp lại hoặc xuất hiện nhiều lần, chúng tôi sẽ thêm ký tự đó vào danh sách đầu ra và in danh sách đầu ra. Ví dụ,
Sử dụng phương thức str.count[]
để kiểm tra xem một ký tự có xuất hiện hai lần trong một chuỗi không, e. g. if my_str.count[char] == 2:
. Phương thức str.count[]
trả về số lần xuất hiện của một chuỗi con trong một chuỗi
Phương thức trả về số lần xuất hiện của một chuỗi con trong một chuỗi
Nếu phương thức trả về 2
, thì ký tự xuất hiện hai lần trong chuỗi
Nếu bạn cần kiểm tra xem chuỗi có ký tự lặp lại hay không, hãy chuyển đổi chuỗi thành _______ và so sánh độ dài của _______ với độ dài của chuỗi
Chúng tôi đã sử dụng lớp set[]
để chuyển đổi chuỗi thành đối tượng set
Các đối tượng tập hợp là một tập hợp các phần tử duy nhất không có thứ tự, do đó, mọi ký tự trùng lặp sẽ bị xóa khi chuyển đổi thành set
Nếu độ dài của set
không bằng độ dài của chuỗi thì chuỗi có các ký tự lặp lại
Bạn cũng có thể sử dụng vòng lặp if my_str.count[char] == 2:
0 để kiểm tra xem một chuỗi có chứa các ký tự lặp lại không
Trên mỗi lần lặp, chúng ta sử dụng phương thức str.count[]
để kiểm tra xem ký tự có xuất hiện nhiều lần trong chuỗi không
Nếu điều kiện được đáp ứng, chúng tôi trả về if my_str.count[char] == 2:
2 và thoát khỏi chức năng
Nếu điều kiện không bao giờ được đáp ứng, thì chuỗi không chứa bất kỳ ký tự lặp lại nào và trả về if my_str.count[char] == 2:
3
Cho một chuỗi có độ dài lớn hơn 0, hãy viết hàm find_duplicates[]
để tìm tất cả các ký tự trùng lặp trong một chuỗi
Thí dụ -
find_duplicates['Hello'] - ['l']
find_duplicates['Hippopotamus'] - ['p', 'o']
find_duplicates['Python'] - [] [An empty list]
Chúng ta sẽ thảo luận về 2 cách để giải quyết câu hỏi này
Phương pháp 1
Cách đầu tiên là một mã python rất chung chung lặp qua tất cả các phần tử trong chuỗi và lưu trữ số lần xuất hiện của mỗi phần tử. Nó đơn giản nhưng hiệu quả
# Method 1
def find_duplicates[s]:
elements = {}
for char in s:
if elements.get[char,None] != None:
elements[char]+=1
else:
elements[char] = 1
return [k for k,v in elements.items[] if v>1]
print[find_duplicates["Hello"]]
>>> ['l']
print[find_duplicates["Hippopotamus"]]
>>> ['p', 'o']
print[find_duplicates["Python"]]
>>> []
Phương pháp 2
Cách thứ hai là sử dụng thư viện collections
. Cụ thể, phương pháp Counter
. Phương pháp này làm giảm đoạn mã trên chỉ còn một vài dòng
Bạn được cung cấp một chuỗi. Tìm các ký tự trùng lặp l trong chuỗi và đưa chúng trở lại bàn điều khiển
đầu vào mẫu
xin chào
Đầu ra mẫu
l
Giải trình
Trong chuỗi “Xin chào”, ký tự được lặp lại và do đó chúng tôi đã in nó trong bảng điều khiển
Giải pháp1. Sử dụng hàm đếm và từ điển
Trong phương thức này, chúng ta có thể nhờ sự trợ giúp của phương thức count[]
lấy ký tự làm tham số và trả về số đếm hoặc giá trị chính của ký tự đã cho trong chuỗi. Và sau đó nếu số lượng lớn hơn 1, chúng tôi sẽ lưu trữ nó trong từ điển và chúng tôi sẽ trả lại. Bạn có thể sử dụng một mảng thay vì từ điển
2. Sử dụng bộ
Tập hợp là kiểu dữ liệu tương tự như danh sách trong khi tập hợp không chứa các giá trị trùng lặp. Chuyển đổi chuỗi đã cho thành một tập hợp và so sánh nó với danh sách ban đầu sẽ cung cấp cho chúng tôi kết quả mong đợi
3. Sử dụng vòng lặp double for
Trong phương pháp này, chúng tôi đang so sánh các ký tự bằng cách sử dụng vòng lặp for kép và chúng tôi đang thay thế ký tự trùng lặp bằng 0
để có một bản nhạc trên đó
4. Sử dụng phương thức ord
Phương thức ord[]
của Python chuyển đổi ký tự thành giá trị Unicode tương đương. Chúng tôi đang tạo một mảng các số 0 có kích thước mảng và chúng tôi đang tăng số lượng khi chúng tôi đối mặt với cùng một ký tự mà chúng tôi đang in và sau đó Unicode được thay thế bằng một giá trị âm để ký tự đó sẽ không được in lại
5. Sử dụng hai vòng lặp for riêng biệt
Phương pháp tương tự được sử dụng ở trên được sử dụng với một số thay đổi nhỏ. Một mảng đã được khai báo để lưu trữ số lần lặp lại bằng các giá trị ASCII. Có gần 256 ký tự ASCII. Vì vậy, no_of_chars trở thành 256. Thông qua mảng này, nếu một ký tự ASCII được lặp lại, nó sẽ không được in theo điều kiện đã cho
Vì vậy, đừng bao giờ ngần ngại đưa ra giải pháp của bạn. Giải pháp của bạn có thể không làm giảm độ phức tạp về thời gian hoặc không gian nhưng nó chắc chắn sẽ giúp giải quyết vấn đề thời gian thực mà chúng tôi có các ràng buộc đầu ra và đầu vào khác nhau