Làm thế nào để bạn tìm thấy các ký tự trùng lặp trong một chuỗi trong python?

@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áp

1. 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

Làm cách nào để kiểm tra xem có các chữ cái trùng lặp trong chuỗi Python không?

Tạo một chuỗi và lưu trữ nó trong một biến. Để so sánh ký tự đã chọn với các ký tự còn lại trong chuỗi, một vòng lặp bên trong sẽ được sử dụng. Nếu một trận đấu được tìm thấy, số lượng được tăng lên 1. Nếu số ký tự nhiều hơn 1 sau khi vòng lặp bên trong kết thúc, thì sẽ có các ký tự trùng lặp trong chuỗi .

Làm cách nào để tìm các chuỗi trùng lặp trong danh sách chuỗi trong Python?

Nhiều cách để kiểm tra xem có tồn tại trùng lặp trong danh sách Python hay không .
Độ dài của Danh sách và độ dài của Tập hợp khác nhau
Kiểm tra từng phần tử trong tập hợp. nếu có, dup, nếu không, thêm
Kiểm tra danh sách. đếm [] cho từng phần tử

Chủ Đề