Viết chương trình Python để tạo một chuỗi từ hai chuỗi đã cho nối các ký tự không phổ biến của các chuỗi đã cho
Giải pháp mẫu. -
Mã Python
def uncommon_chars_concat[s1, s2]:
set1 = set[s1]
set2 = set[s2]
common_chars = list[set1 & set2]
result = [ch for ch in s1 if ch not in common_chars] + [ch for ch in s2 if ch not in common_chars]
return[''.join[result]]
s1 = 'abcdpqr'
s2 = 'xyzabcd'
print["Original Substrings:\n",s1+"\n",s2]
print["\nAfter concatenating uncommon characters:"]
print[uncommon_chars_concat[s1, s2]]
Đầu ra mẫu
Original Substrings: abcdpqr xyzabcd After concatenating uncommon characters: pqrxyz
Trình bày bằng hình ảnh
Sơ đồ
Trực quan hóa việc thực thi mã Python
Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực thi chương trình nói trên
Ngôn ngữ lập trình Python là ngôn ngữ lập trình cấp cao và hướng đối tượng. Python là một ngôn ngữ lập trình cấp cao mạnh mẽ, dễ học. Nó có một cách tiếp cận đơn giản nhưng hiệu quả đối với lập trình hướng đối tượng
Các chuỗi trong Python là bất biến có nghĩa là chúng không thể thay đổi sau khi được xác định
Tìm các từ không phổ biến từ hai chuỗi
Chúng tôi sẽ lấy hai chuỗi làm đầu vào từ người dùng bao gồm các từ. Và sau đó chúng tôi sẽ in tất cả các từ trong chuỗi không có trong cả hai chuỗi
Chuỗi bao gồm các câu là các từ được phân tách bằng dấu cách
Thí dụ
Input: str1 = "learn programming at includehelp" str2 = "learn python programming language" Output: "python", "at", "includehelp"
Một phương pháp đơn giản để giải quyết vấn đề là tìm các từ chỉ xuất hiện một lần trong bất kỳ chuỗi nào
Đối với điều này, chúng tôi sẽ tạo một hashmap để lưu trữ các từ và tần suất xuất hiện của chúng cho cả hai chuỗi. Và sau đó in những từ đó từ hashmap có số lần xuất hiện là một
Chương trình tìm các từ không phổ biến trong hai chuỗi
# Python program to find uncommon words from two string, # Getting strings as input from the user str1 = input['Enter first string : '] str2 = input['Enter second string : '] # finding uncommon words count = {} for word in str1.split[]: count[word] = count.get[word, 0] + 1 for word in str2.split[]: count[word] = count.get[word, 0] + 1 uncommonWords = [word for word in count if count[word] == 1] # printing uncommon words print["All uncommon words from both the string are ", uncommonWords]
đầu ra
Enter first string : learn python programming Enter second string : learn programming at includehelp All uncommon words from both the string are ['python', 'at', 'includehelp']
Phương pháp luân phiên
Một cách khác để giải quyết vấn đề là lưu trữ cả hai chuỗi dưới dạng danh sách và sau đó lưu trữ các ký tự từ danh sách này không có trong danh sách khác vào danh sách. Sau đó in tất cả các giá trị không phổ biến cho cả hai chuỗi
Trong hướng dẫn này, bạn sẽ học cách tìm các từ không phổ biến từ một chuỗi trong Python. Chuỗi trong Python là một chuỗi các ký tự được bọc trong dấu nháy đơn, kép hoặc ba. Các từ là các chuỗi con được phân tách bằng dấu cách trong chuỗi gốc
Một từ không phổ biến chỉ khi nó xuất hiện đúng một lần trong bất kỳ chuỗi nào trong các chuỗi đã cho và không xuất hiện trong chuỗi kia
Chúng ta hãy xem đầu vào và đầu ra mẫu của chương trình
Đầu vào
"chuỗi con là một phần của chuỗi"
"1 là một phần của hệ thống số"
đầu ra
["phụ", "1", "số", "hệ thống"]
Để giải quyết vấn đề này trong Python, chúng ta có thể làm theo các cách tiếp cận sau
- Bằng cách băm
- Bằng phương pháp lặp
- Bằng cách sử dụng phương thức symmetric_difference[]
Chúng tôi sẽ thảo luận chi tiết từng phương pháp
Cách tiếp cận 1. phương pháp băm
Mỗi từ không phổ biến xuất hiện chính xác một lần trong bất kỳ chuỗi nào. Vì vậy, chúng tôi sẽ tạo một hàm băm để đếm số lần xuất hiện của mỗi từ, sau đó chúng tôi sẽ trả về danh sách các từ chỉ xuất hiện một lần. Để đếm số lần xuất hiện của mỗi từ, hãy sử dụng đếm. phương thức nhận []. Đây là một phương thức sẵn có trả về số lần xuất hiện của một chuỗi con trong chuỗi đã cho
thuật toán
Thực hiện theo thuật toán để hiểu cách tiếp cận tốt hơn
Bước 1- Xác định một hàm sẽ chấp nhận cả hai chuỗi
Bước 2- Trong hàm, khai báo một biến sẽ lưu trữ tất cả các số đếm
Bước 3- Đối với mỗi từ trong chuỗi số lần xuất hiện đầu tiên của mỗi từ
Bước 4- Đếm số lần xuất hiện của mỗi từ trong chuỗi 2
Bước 5- Chọn và chỉ trả về những từ có số đếm bằng 1
Bước 7- In giá trị trả về của hàm
Chương trình Python 1
Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên. Chúng tôi đã sử dụng khả năng hiểu danh sách, đây là một cú pháp ngắn hơn để đưa các giá trị vào danh sách dựa trên các điều kiện nhất định, để chọn các từ có số lượng là 1
def uncommon_words[s1, s2]:
count = {}
for word in s1.split[]:
count[word] = count.get[word, 0] + 1
# words of string s2
for word in s2.split[]:
count[word] = count.get[word, 0] + 1
# return required list of words
return [word for word in count if count[word] == 1]
s1="Studytonight"
s2="Welcome to Studytonight"
# Print required answer
print[uncommon_words[s1, s2]]
['Chào mừng bạn đến']
Cách tiếp cận 2. phương pháp lặp
Trong cách tiếp cận này, trước tiên chúng ta sẽ tách các từ trong chuỗi bằng phương thức split[]. Sau đó, chúng tôi sẽ kiểm tra các từ có trong chuỗi đầu tiên nhưng không có trong chuỗi thứ hai và ngược lại. Chúng tôi sẽ thêm những từ này vào một chuỗi và trả về chuỗi này là kết quả
thuật toán
Thực hiện theo thuật toán để hiểu cách tiếp cận tốt hơn
Bước 1- Xác định một hàm sẽ chấp nhận cả hai chuỗi
Bước 2- Trong hàm, khai báo danh sách các từ của chuỗi đầu tiên
Bước 3- Khai báo một danh sách khác cho các từ của chuỗi thứ hai
Bước 4- Khai báo một chuỗi sẽ lưu trữ các từ không phổ biến
Bước 5- Tìm kiếm các từ có trong chuỗi 1 và không có trong chuỗi 2 và thêm các từ không phổ biến này vào chuỗi mới
Bước 6- Tìm kiếm các từ có trong chuỗi 2 và không có trong chuỗi 1 và thêm các từ không phổ biến này vào chuỗi mới
Bước 7- Trả về chuỗi mới làm kết quả
Bước 8- In giá trị trả về của hàm
Chương trình Python 2
Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên. Chúng ta đã sử dụng vòng lặp for để duyệt qua các từ trong chuỗi
#list of uncommon words
def uncommon[s1,s2]:
list_s1 = s1.split[]
list_s2 = s2.split[]
uc_words = ""
for i in list_s1:
if i not in list_s2:
uc_words = uc_words+" "+i
for j in list_s2:
if j not in list_s1:
uc_words = uc_words+" "+j
return uc_words
a = "berry mango cherry"
b = "berry peach cherry"
print[uncommon[a,b]]
xoài đào
Cách tiếp cận 3. sử dụng phương thức symmetric_difference[]
Chúng tôi sẽ sử dụng một phương thức hoạt động cho các tập hợp trong Python. Phương thức symmetric_difference[] trả về một tập hợp chứa tất cả các mục từ cả hai tập hợp, ngoại trừ các mục có trong cả hai tập hợp
thuật toán
Thực hiện theo thuật toán để hiểu cách tiếp cận tốt hơn
Bước 1- Xác định một hàm sẽ chấp nhận cả hai chuỗi
Bước 2- Trong hàm, khai báo một biến sẽ lưu trữ tất cả các từ của chuỗi 1
Bước 3- Khai báo một biến khác sẽ lưu trữ tất cả các từ của chuỗi 2
Bước 4- Trong một biến lưu trữ giá trị được trả về bởi symmetric_difference[]
Bước 5- Trả về biến này
Bước 6- Khai báo cả hai chuỗi và gọi hàm
Bước 7- In giá trị trả về của hàm
Chương trình Python 3
Nhìn vào chương trình để hiểu việc thực hiện phương pháp nêu trên. Để chuyển đổi chuỗi thành tập hợp, chúng tôi đã sử dụng phương thức set[] và để chuyển đổi chuỗi dữ liệu thành danh sách trong Python, chúng tôi đã sử dụng phương thức list[]
def uncommon[s1,s2]:
s1=s1.split[]
s2=s2.split[]
k=set[s1].symmetric_difference[set[s2]]
return k
a = "berry mango cherry"
b = "berry peach cherry"
print[list[uncommon[a,b]]]
['xoài', 'đào']
Sự kết luận
Trong hướng dẫn này, chúng ta đã thấy cách tìm các từ không phổ biến từ hai chuỗi đã cho bằng ba cách tiếp cận khác nhau. Đầu tiên, bằng cách sử dụng phương thức băm, thứ hai bằng cách sử dụng phương pháp lặp và thứ ba bằng cách sử dụng phương thức symmetric_difference[]