华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html
停车场最大距离
题目
停车场有一横排车位0
代表没有停车,1
代表有车.
至少停了一辆车在车位上,也至少有一个空位没有停车.
为防止刮蹭,需为停车人找到一个车位
使得停车人的车最近的车辆的距离是最大的
返回此时的最大距离
输入
- 一个用半角逗号分割的停车标识字符串,停车标识为
0
或1
,
0
为空位,1
为已停车 - 停车位最多有
100
个
输出
- 输出一个整数记录最大距离
示例一
输入
1,0,0,0,0,1,0,0,1,0,1
输出
2
说明
当车停在第三个位置上时,离其最近的车距离为2(1~3)
当车停在第四个位置上时,离其最近的车距离为2(4~6)
其他位置距离为1
因此最大距离为2
编码思路
找到一个只包含 0 和 1 的字符串中,所有 0 距离最近的 1 的距离最大是多少。具体算法思路是遍历字符串中的所有 0,分别计算当前 0 距离它左右两个 1 的距离,取两者中的最小值作为当前 0 距离最近的 1 的距离。遍历完所有的 0 后,最终得到的最大距离即为所求。
核心知识点
- strip(): 去掉字符串首尾的空格、制表符、换行符等空白字符;
- str.replace(old, new): 将字符串中所有的 old 替换成 new;
- list(map(func, iterable)): 将可迭代对象 iterable 中的每个元素传递给函数 func 并将结果作为新的列表返回;
Python 代码实现