You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写基于宽、高、深度修改指定三维位置字符的字符串函数?

三维字符串位置替换函数实现

需求说明

需要编写一个函数,输入参数包括:

  • 原字符串
  • 整数类型的行索引、列索引、深度索引
  • 替换字符n
  • 整数宽度、高度、深度

函数返回原字符串的副本,将指定行、列、深度索引位置的字符替换为n。示例如下:

>>> replace_3d_char('.XXvv..vV..XXX.vVxv', 0, 0, 0, '#', 3, 3, 2)
'#XXvv..vV..XXX.vVxv'

二维版本参考(背景信息)

此前已实现过二维版本的同类函数,参数包括原字符串、行索引、列索引、替换字符n、宽度、高度,返回替换指定行列位置后的字符串副本。示例:

>>> new_function('..x..x..x', 1, 1, '#', 3, 3)
'..x.#x..x'

实现思路

  1. 索引计算逻辑:
    • 二维场景中,单个二维层的长度为width * height,指定位置的全局索引为:row * width + col
    • 三维场景中,每个深度切片对应一个完整的二维层,因此指定位置的全局索引需先跳过前面的深度层,再计算二维内的索引:
      全局索引 = 深度索引 * (宽度 * 高度) + 行索引 * 宽度 + 列索引
      
  2. 字符串不可变处理:
    由于Python字符串是不可变类型,需先将其转换为列表,修改指定索引的字符后再转回字符串。
  3. 可选的边界校验:
    可以添加索引合法性检查,避免因输入无效索引导致的越界错误。

代码实现

def replace_3d_char(s, row, col, depth_idx, n, width, height, depth):
    # 计算单个二维层的字符总数
    layer_size = width * height
    # 计算目标字符的全局索引
    target_index = depth_idx * layer_size + row * width + col
    
    # 可选:校验索引是否在字符串范围内
    if not (0 <= target_index < len(s)):
        raise IndexError("指定的行/列/深度索引超出字符串有效范围")
    
    # 转换为列表修改后拼接回字符串
    s_list = list(s)
    s_list[target_index] = n
    return ''.join(s_list)

测试验证

运行题目中的示例:

result = replace_3d_char('.XXvv..vV..XXX.vVxv', 0, 0, 0, '#', 3, 3, 2)
print(result)  # 输出: #XXvv..vV..XXX.vVxv

内容的提问来源于stack exchange,提问作者hihowareyou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:10:22