Cố gắng viết một hàm cho hai chuỗi và trả về các ký tự giao nhau theo thứ tự chúng xuất hiện trong chuỗi đầu tiên.Python - Chuỗi giao giữa
Đây là những gì tôi đã cố gắng:
def strIntersection(str1, str2):
for i in str1:
str3 = ''
str3 = str3.join(i for i in str1 if i in str2 not in str3)
return str3
str1 = 'asdfasdfasfd'
str2 = 'qazwsxedc'
strIntersection(str1,str2)
=> 'asdasdasd'
tuy nhiên tôi chỉ muốn các nhân vật ngã tư xuất hiện một lần và trong trật tự của chuỗi đầu tiên tức. 'asd'
Có ai giúp được không?
Tôi đã tìm thấy một số vấn đề tương tự như trên các diễn đàn khác, nhưng các giải pháp tất cả dường như liên quan đến danh sách trong khi tôi muốn đầu ra của tôi là một chuỗi
Cảm ơn! Nó chắc chắn là dễ hiểu hơn. Bây giờ tôi nhận ra rằng tôi đã làm phức tạp nó bằng cách cố gắng sử dụng '' join() – bang
''' .join' là thành ngữ và không phức tạp chút nào. Tuy nhiên, sử dụng nó trong một vòng lặp, bỏ lỡ điểm. Trên thực tế, vòng lặp for trong mã OP hoàn toàn vô dụng; nó chỉ đơn giản là gây ra công việc thực tế - 'str3 = str3.join (i cho i trong str1 nếu i trong str2 không ở str3)' được thực hiện nhiều lần, với cùng một kết quả mỗi lần, và kết quả bị vứt bỏ mỗi lần nhưng cuối cùng. –
Bạn không thể viết lại thuật toán cụ thể này để hiểu danh sách - ít nhất là không phải gọi một số công cụ không có giấy tờ đáng ngờ - vì bước lọc 'c trong s2 và c không ở ngoài' phụ thuộc vào kết quả từng phần cho đến thời điểm này , không thể truy cập được (ngoại trừ thông qua các nội dung không rõ ràng). –