如何使用while/if等基础语句替换字符串非指定索引位置的特定字符
实现思路
整个逻辑仅靠while循环、if条件判断就能实现,不需要调用复杂的内置字符串处理方法,核心流程如下:
- 正向遍历字符串,定位第一个出现的小写
a的索引 - 反向遍历字符串,定位最后一个出现的小写
a的索引 - 逐字符遍历原串拼接结果:当前字符为
a,且所在位置不是刚才找到的首尾两个a的位置时,替换为大写A,其余字符原样保留
特殊情况处理:如果字符串中
a的数量小于2,不存在需要替换的中间a,直接返回原字符串即可。
代码实现
# 原始字符串 s = "alba iuliara" str_length = len(s) first_a_pos = -1 last_a_pos = -1 # 正向查找第一个a的位置 i = 0 while i < str_length: if s[i] == 'a': first_a_pos = i break i += 1 # 反向查找最后一个a的位置 i = str_length - 1 while i >= 0: if s[i] == 'a': last_a_pos = i break i -= 1 result = "" # a的数量不足2个,直接返回原字符串 if first_a_pos == -1 or first_a_pos == last_a_pos: result = s else: # 逐字符拼接最终结果 i = 0 while i < str_length: current_char = s[i] if current_char == 'a' and i != first_a_pos and i != last_a_pos: result += 'A' else: result += current_char i += 1 print(result)
运行上述代码会直接输出预期结果:albA iuliAra
逻辑校验
针对测试用例alba iuliara核对位置关系:
- 第一个
a在索引0位,最后一个a在索引11位,这两个位置的a保持小写 - 字符串中间的两个
a分别在索引3、索引9位,符合替换规则,转为大写A - 其余字符全部原样保留,最终拼接结果和预期完全一致
内容的提问来源于stack exchange,提问作者Vasilis
相关产品推荐
相关产品推荐

