Hướng dẫn count common characters in two strings python - đếm các ký tự chung trong hai chuỗi python

3

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Đầu ra của mã này tiếp tục là 4. Tuy nhiên, đầu ra phải là 3. Giao điểm đã đặt có mặt bởi vì tôi tin rằng đó là chìa khóa cho câu trả lời. Lý do cho câu trả lời là 4 thay vì 3 đến từ số 2 Q và 1 R phù hợp với S2 trong S1.

s2 = "qsrqq"
s1 = "qqtrr"
counts1=0
counts2=0
letters= set.intersection[set[s1], set[s2]]
for letter1 in set[s1]:
    counts1 += s2.count[letter1]
for letter2 in set[s2]:
    counts2 += s1.count[letter2]


counts = min[counts1, counts2]
print [counts]

Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.

Đã hỏi ngày 30 tháng 5 năm 2017 lúc 18:28May 30, 2017 at 18:28

Drew Bennettdrew BennettDrew Bennett

4833 Huy hiệu vàng6 Huy hiệu bạc25 Huy hiệu Đồng3 gold badges6 silver badges25 bronze badges

7

Nếu bạn muốn duy trì số lượng ký tự chung, bạn nên sử dụng bộ sưu tập.

from collections import Counter

s2 = 'qsrqq' 
s1 = 'qqtrr'

common_letters = Counter[s1] & Counter[s2]  # => {'q': 2, 'r': 1}
print[sum[common_letters.values[]]]         # => 3

Đã trả lời ngày 30 tháng 5 năm 2017 lúc 18:39May 30, 2017 at 18:39

Chó lười biếnglazy dog

2.29612 huy hiệu bạc21 Huy hiệu đồng12 silver badges21 bronze badges

1

Đây là một giải pháp không liên quan đến các bộ:

s2 = sorted["qsrqq"]
s1 = sorted["qqtrr"]

count = 0
while len[s1]>0 and len[s2]>0:
    if s1[0] == s2[0]:
        count += 1
        s1 = s1[1:]
        s2 = s2[1:]
    elif s1[0] < s2[0]:
        s1 = s1[1:]
    else:
        s2 = s2[1:]

print[count]

Đã trả lời ngày 30 tháng 5 năm 2017 lúc 18:41May 30, 2017 at 18:41

SCOTT HUNTSCOTT HUNTERScott Hunter

47.5K11 Huy hiệu vàng56 Huy hiệu bạc95 Huy hiệu Đồng11 gold badges56 silver badges95 bronze badges

1

#!/usr/bin/python
s2 = "qsrqq"
s1 = "qqtrr"
counts1=0
counts2=0
letters= set.intersection[set[s1], set[s2]]
print ["letters: "+str[letters] + " intersection count: "+str[len[letters]]]
for letter1 in set[s1]:
    print ["letter1 " + str[letter1]]
    counts1 += 1
for letter2 in set[s2]:
    print ["letter2 " + str[letter2] ]
    counts2 += 1

print ["counts1 " + str[counts1] + " counts2 " + str[counts2] ]
counts = min[counts1, counts2]
print [counts]

Kết quả này trong;

[~]$ python /tmp/test.py
letters: set[
['q', 'r']] intersection count: 2
letter1 q
letter1 r
letter1 t
letter2 q
letter2 s
letter2 r
counts1 3 counts2 3
3

Phân tích, 2 là câu trả lời đúng [Q và R là chữ cái duy nhất phổ biến cho cả hai], 3 là số lượng thấp hơn của các giá trị duy nhất.

Đã trả lời ngày 30 tháng 5 năm 2017 lúc 18:48May 30, 2017 at 18:48

1

def commonCharacterCount[s1, s2]:
    return sum[ min[s1.count[char], s2.count[char]] for char in [set[s1] & set[s2]]]

Đã trả lời ngày 24 tháng 12 năm 2020 lúc 11:13Dec 24, 2020 at 11:13

1

Tôi đã thay thế đoạn mã ban đầu của bạn

for letter1 in set[s1]:
    counts1 += s2.count[letter1]

to:

for letter1 in set[s1]:
    v = s2.count[letter1]
    print["{0}:{1}".format[letter1, v]]
    counts1 += v

Nó xuất ra, nó là chữ cái có số lượng xảy ra:

r:1
q:3
t:0

Nó đúng, chuỗi

from collections import Counter

s2 = 'qsrqq' 
s1 = 'qqtrr'

common_letters = Counter[s1] & Counter[s2]  # => {'q': 2, 'r': 1}
print[sum[common_letters.values[]]]         # => 3
5 là QSRQQ và bạn kiểm tra SET [S1] được đặt chứa
from collections import Counter

s2 = 'qsrqq' 
s1 = 'qqtrr'

common_letters = Counter[s1] & Counter[s2]  # => {'q': 2, 'r': 1}
print[sum[common_letters.values[]]]         # => 3
6 và
from collections import Counter

s2 = 'qsrqq' 
s1 = 'qqtrr'

common_letters = Counter[s1] & Counter[s2]  # => {'q': 2, 'r': 1}
print[sum[common_letters.values[]]]         # => 3
7 Các số đếm là chính xác. Tương tự, nếu kiểm tra vòng lặp thứ 2, đầu ra là:

q:3
r:1
s:1

Do đó số lượng tối thiểu là 4.

Đã trả lời ngày 30 tháng 5 năm 2017 lúc 18:36May 30, 2017 at 18:36

Haifeng Zhanghaifeng ZhangHaifeng Zhang

28.4K19 Huy hiệu vàng74 Huy hiệu bạc119 Huy hiệu đồng19 gold badges74 silver badges119 bronze badges

Thực hiện một số lượng cho mỗi chữ cái, và lấy tối thiểu để tìm hiểu xem có bao nhiêu chữ cái đó là phổ biến cho cả hai chuỗi. Sau đó, tổng hợp điều đó, và đó là câu trả lời của bạn.

from collections import Counter

s2 = 'qsrqq' 
s1 = 'qqtrr'

common_letters = Counter[s1] & Counter[s2]  # => {'q': 2, 'r': 1}
print[sum[common_letters.values[]]]         # => 3
0

Đã trả lời ngày 30 tháng 5 năm 2017 lúc 18:37May 30, 2017 at 18:37

Sepehr Nazarisepehr NazariSepehr Nazari

3.6954 Huy hiệu vàng11 Huy hiệu bạc17 Huy hiệu đồng4 gold badges11 silver badges17 bronze badges

0

Đây là một cách khác để làm điều đó bằng cách sử dụng không có mô -đun.

from collections import Counter

s2 = 'qsrqq' 
s1 = 'qqtrr'

common_letters = Counter[s1] & Counter[s2]  # => {'q': 2, 'r': 1}
print[sum[common_letters.values[]]]         # => 3
1

Đã trả lời ngày 30 tháng 5 năm 2017 lúc 18:43May 30, 2017 at 18:43

gold_cygold_cygold_cy

12.8k3 Huy hiệu vàng21 Huy hiệu bạc42 Huy hiệu đồng3 gold badges21 silver badges42 bronze badges

from collections import Counter

s2 = 'qsrqq' 
s1 = 'qqtrr'

common_letters = Counter[s1] & Counter[s2]  # => {'q': 2, 'r': 1}
print[sum[common_letters.values[]]]         # => 3
2

Đã trả lời ngày 28 tháng 12 năm 2018 lúc 21:41Dec 28, 2018 at 21:41

1

Một cách khác, mặc dù rất muộn ...

from collections import Counter

s2 = 'qsrqq' 
s1 = 'qqtrr'

common_letters = Counter[s1] & Counter[s2]  # => {'q': 2, 'r': 1}
print[sum[common_letters.values[]]]         # => 3
3

Đã trả lời ngày 27 tháng 4 năm 2021 lúc 14:27Apr 27, 2021 at 14:27

0Knowledge0Knowledge0Knowledge

7193 Huy hiệu bạc12 Huy hiệu đồng3 silver badges12 bronze badges

Làm thế nào để bạn đếm các chữ cái phổ biến trong hai chuỗi trong Python?

Cách tiếp cận: Đếm tần số của tất cả các ký tự từ cả hai chuỗi. Bây giờ, đối với mỗi ký tự nếu tần số của ký tự này trong chuỗi S1 là freq1 và trong chuỗi S2 là freq2 thì tổng số các cặp hợp lệ với ký tự này sẽ là tối thiểu [freq1, freq2]. Tổng giá trị này cho tất cả các ký tự là câu trả lời cần thiết.Count the frequencies of all the characters from both strings. Now, for every character if the frequency of this character in string s1 is freq1 and in string s2 is freq2 then total valid pairs with this character will be min[freq1, freq2]. The sum of this value for all the characters is the required answer.

Làm thế nào để bạn kiểm tra xem hai chuỗi có ký tự chung?

Đối với mỗi ký tự trong chuỗi 1, chúng tôi tăng chỉ số vector của ký tự đó, ví dụ: v [s1 [i]-'a'] ++, đối với mỗi ký tự của chuỗi 2, chúng tôi kiểm tra vectơ cho các ký tự chung nếu v [s2 [i]-'A']> 0 sau đó đặt cờ = true và v [s2 [i]-'a']-sao cho một ký tự của chuỗi 2 được so sánh chỉ với một ký tự của chuỗi 1.if v[s2[i]-'a'] > 0 then set flag = true and v[s2[i]-'a']– such that one character of string 2 is compared with only one character of string 1.

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?

Không phổ biến [S1, S2] / * S1 và S2 là hai chuỗi * / Bước 1: Chuyển đổi cả hai chuỗi thành SET ST1 và ST2.Bước 2: Sử dụng giao điểm của hai bộ và nhận các ký tự chung.Bước 3: Bây giờ tách ra các ký tự trong mỗi chuỗi không phổ biến trong cả hai chuỗi.Step 1: Convert both string into set st1 and st2. Step 2: use the intersection of two sets and get common characters. Step 3: now separate out characters in each string which are not common in both string.

Làm cách nào để kiểm tra xem hai chuỗi có cùng một ký tự trong Python không?

So sánh chuỗi bằng cách sử dụng == trong python hàm == so sánh các giá trị của hai chuỗi và trả về nếu chúng bằng hoặc không.Nếu các chuỗi bằng nhau, nó sẽ trả về đúng, nếu không nó sẽ trả về sai.The == function compares the values of two strings and returns if they are equal or not. If the strings are equal, it returns True, otherwise it returns False.

Bài Viết Liên Quan

Chủ Đề