今天来道中等题(其实是简单题的难度) 相邻字母匹配计数问题
问题描述
小F有一个由大写字母和小写字母组成的字符串。她想知道,在忽略字母大小写的情况下,有多少对相邻的字母是相等的。
例如,对于字符串 "aABbbC",在忽略大小写的情况下,有 3 对相邻字母是相等的,分别是 "aA","AB" 和 "bb"。
测试样例
样例1:
输入:s = "aABbbC"
输出:3
样例2:
输入:s = "XYZxyZ"
输出:0
样例3:
输入:s = "AaBbCc"
输出:3
还是老规矩 简单分析一哈
我们需要统计在忽略字母大小写后,相邻字母是否相等的对数。解题的关键步骤可以分为以下几个:
-
忽略大小写:首先,我们要忽略字母的大小写进行比较,转换字母的大小写可以通过将字符统一转换为小写或大写来实现。
-
遍历字符串并比较相邻字符:遍历字符串中的相邻字符对,比较它们是否相等。这里的比较是忽略大小写的。(这里写个判断就欧克了)
-
统计相等对数:每次相邻字符相等时,计数器加一,最后输出总计数。(这里用循环就很简单了)
关键知识点
1. 字符大小写转换
要忽略字母的大小写,我们需要将字符统一转换为同一个大小写。Python提供了两种方法:
lower():将字符或字符串转换为小写。upper():将字符或字符串转换为大写。
例如,'a'.lower() 返回 'a','A'.lower() 也返回 'a'。
2. 遍历字符串
我们可以通过循环遍历字符串中的相邻字符对,并进行比较。对于每个相邻的字符对(s[i] 和 s[i+1]),将它们转换成统一的大小写后进行比较。
3. 计数器的使用
定义一个变量 count 来统计相等的字符对。每次找到相等的字符对,就将 count 增加 1。
详细步骤
-
初始化计数器:首先定义一个计数器
count,用于统计相邻相等的字母对。 -
遍历字符串:使用一个循环,从字符串的第一个字符到倒数第二个字符进行遍历。
-
转换字符为统一大小写:对于每一对相邻字符
s[i]和s[i+1],将它们转换为小写(或大写)后进行比较。 -
更新计数器:如果转换后的两个字符相等,增加计数器
count。 -
输出结果:遍历完成后,输出
count。
示例分析
示例 1
输入:s = "aABbbC"
- 统一转换为小写:
"aABbbC"->"aabbbc" - 比较相邻字符:
- 比较
'a'和'a'-> 相等,count = 1 - 比较
'a'和'b'-> 不相等,count不变 - 比较
'b'和'b'-> 相等,count = 2 - 比较
'b'和'b'-> 相等,count = 3 - 比较
'b'和'c'-> 不相等,count不变
- 比较
- 最终输出
count = 3
示例 2
输入:s = "XYZxyZ"
- 统一转换为小写:
"XYZxyZ"->"xyzxyz" - 比较相邻字符:
- 比较
'x'和'y'-> 不相等,count不变 - 比较
'y'和'z'-> 不相等,count不变 - 比较
'z'和'x'-> 不相等,count不变 - 比较
'x'和'y'-> 不相等,count不变 - 比较
'y'和'z'-> 不相等,count不变
- 比较
- 最终输出
count = 0
代码实现
def solution(s: str):
# 将字符串转换为小写
s = s.lower()
# 初始化计数器
count = 0
# 遍历字符串,检查每一对相邻字符
for i in range(len(s) - 1):
if s[i] == s[i + 1]:
count += 1
# 返回最终的计数
return count