规则如下:裁判会在纸上写下两行由大写英文字母组成的字符串。要求参赛的选手凭眼力和记忆力统计出在两个字符串中都出现的字母共有多少个。比如 ABACFGG AAADCG 两个字符串中都出现的字母有AACG,一共有4个。 另外还要统计相同的位置上出现相同字母的一共有多少个。 c++
时间: 2023-05-11 20:02:09 浏览: 86
这是一个字符串匹配问题,可以使用哈希表来实现。首先遍历第一个字符串,将每个字母出现的次数记录在哈希表中。然后遍历第二个字符串,如果当前字母在哈希表中出现过,则将共同出现的字母计数器加一,并将哈希表中对应字母的计数器减一。同时,如果两个字符串在相同位置上出现相同字母,则将相同位置上出现相同字母的计数器加一。最后输出共同出现的字母计数器和相同位置上出现相同字母的计数器即可。
以下是示例代码:
```python
def count_common_letters(s1, s2):
common_count = 0
same_position_count = 0
letter_count = {}
for letter in s1:
letter_count[letter] = letter_count.get(letter, 0) + 1
for i, letter in enumerate(s2):
if letter in letter_count and letter_count[letter] > 0:
common_count += 1
letter_count[letter] -= 1
if i < len(s1) and s1[i] == letter:
same_position_count += 1
return common_count, same_position_count
```
调用示例:
```python
s1 = "ABACFGG"
s2 = "AAADCG"
common_count, same_position_count = count_common_letters(s1, s2)
print("共同出现的字母数:", common_count)
print("相同位置上出现相同字母的数:", same_position_count)
```
输出结果:
```
共同出现的字母数: 4
相同位置上出现相同字母的数: 2
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![tgz](https://img-home.csdnimg.cn/images/20250102104920.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)