Python求解:由 o 和 x 组成字符串中含两种字符子串的整数对数量
以下是使用 Python 解决此问题的代码: ```python n = int(input()) s = input() count = 0 # 遍历所有可能的子串起始位置 l for l in range(n): has_o = False has_x = False # 遍历以 l 为起始位置的所有可能的子串结束位置 r for r in range(l, n): if s[r] == 'o': has_o = True if s[r] == 'x': has_x = True if has_o and has_x: count = count + 1 print(count) ``` 代码解释 1. 输入读取: - 首先读取整数 `n`,它代表字符串的长度。 - 接着读取字符串 `s`,该字符串仅由字符 `o` 和 `x` 组成。 2. 双重循环遍历所有子串: - 外层循环控制子串的起始位置 `l`,范围是从 `0` 到 `n - 1`。 - 对于每个起始位置 `l`,内层循环控制子串的结束位置 `r`,范围是从 `l` 到 `n - 1`。 - 对于每个子串 `S[l:r + 1]`,使用两个布尔变量 `has_o` 和 `has_x` 来标记子串中是否包含字符 `o` 和 `x`。 - 当遍历到字符 `o` 时,将 `has_o` 设为 `True`;当遍历到字符 `x` 时,将 `has_x` 设为 `True`。 - 一旦 `has_o` 和 `has_x` 都为 `True`,说明当前子串同时包含 `o` 和 `x`,将满足条件的整数对数量 `count` 加 1。 3. 输出结果: - 最后输出满足条件的整数对 `(l, r)` 的数量 `count`。 复杂度分析 - 时间复杂度:$O(n^2)$,因为使用了双重循环来遍历所有可能的子串。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 517点数解答 | 2025-12-11 12:17:02]
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)232
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)236
- C++实现读取数字并输出最小值的代码及解释(字节豆包 | 113点数解答 | 2026-03-20 19:32:56)17
- C语言:按特定格式输入并格式化输出整数、实数和字符(字节豆包 | 103点数解答 | 2024-10-24 11:12:53)407
- 判断超级幸运数:满足“纯4/7数位”或“4/7总个数为4或7”的整数计数(阿里通义 | 965点数解答 | 2026-03-13 12:15:06)32
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)484
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)472
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)410
- 3414 数字游戏:Python 求解 8 位 01 字符串中 1 的个数 (字节豆包 | 106点数解答 | 2024-10-27 14:23:27)434
- 巧用字符添加,计算字符串中“our”最大数量及开发注意要点(DeepSeek | 376点数解答 | 2025-10-30 19:20:06)83
- C 语言实现:处理字符串生成最多 “our” 串,附代码及关键开发注意点 (DeepSeek | 257点数解答 | 2025-10-30 19:20:36)114
- 判断整数是否为二进制数:Python、Java、C++ 代码实现(字节豆包 | 473点数解答 | 2025-11-15 20:34:57)80