Làm thế nào để bạn tìm thấy các ký tự không phổ biến trong hai chuỗi trong python?

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

  1. Bằng cách băm
  2. Bằng phương pháp lặp
  3. 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[]

Chủ Đề