这场 WeRide OA 做下来真的挺顺利的,三个题都在 Hackerrank 平台上完成,题型偏逻辑实现型,时间很充裕,全程基本没卡点。做完感觉这套题就是在考察思维清晰度和实现细节,题量适中、难度不高,但还是有一些地方能体现你对 DP 和字符串的敏感度。下面详细复盘一下三道题。
Q1: Date Mapping and Reformatting
Problem Statement:
Given a date string like "20th Oct 2025", convert it into the format "2025-10-20".
思路:
这题是非常标准的字符串处理题。
- 建立一个英文月份到数字的映射表,比如
"Jan" -> "01","Feb" -> "02","Oct" -> "10"。 - 拆分输入字符串,提取
day,month,year。 - 注意
day中会带 “st”、“nd”、“rd”、“th” 等后缀,要去掉。 - 最后拼接为
"YYYY-MM-DD"的格式返回。
代码量不大,但要小心处理输入格式。
Q2: Minimum Cost to Make Adjacent Numbers Unequal
Problem Statement:
You are given two arrays h[] and c[]. You can increase h[i] by 1 at a cost of c[i].
Find the minimum total cost required so that all adjacent elements in h are not equal.
思路分析:
这题看起来像贪心,但其实是 DP。
关键观察是:每个元素最多加两次就足以避免与相邻重复。
- 定义状态
dp[i][j]表示前i个数中,第i个加了j次后的最小花费(j ∈ {0,1,2})。 - 状态转移时,从前一个位置
dp[i-1][k]转移而来,只要(h[i]+j) != (h[i-1]+k)。 - 转移公式为:
dp[i][j] = min(dp[i-1][k] + j * c[i]) if h[i]+j != h[i-1]+k
- 最终答案取三种状态的最小值。
这个思路时间复杂度是 O(9n),实现简单又安全。
DP 初始化和边界条件是最容易丢分的地方。
Q3: Count Binary Substrings
Problem Statement:
Given a binary string s, count the number of substrings that contain consecutive 0s followed by consecutive 1s (or vice versa), where the number of 0s and 1s are equal.
思路解析:
这题其实和 LeetCode 上的经典题 “Count Binary Substrings” 一样。
- 首先遍历字符串,统计连续相同字符的长度,比如
"00011110"→[3, 4, 1]。 - 然后对相邻的两段长度
a[i], a[i+1],答案加上min(a[i], a[i+1])。 - 因为每个有效子串都是从中间的“01”或“10”边界扩展出去形成的。
举个例子:
s = "00110011"
groups = [2,2,2,2]
result = min(2,2)+min(2,2)+min(2,2) = 6
实现上非常高效,关键是想到“连续段长度”这个抽象。
WeRide OA 整体感受
整套 OA:
- 平台:Hackerrank
- 题量:3 道
- 时间:90 分钟
- 难度:中等偏易
- 考点:字符串处理、动态规划思维、基础逻辑
WeRide 的题风格挺统一的,逻辑清晰但容易有小坑,写的时候一定要注意输入细节,比如日期格式、DP 初始化条件、边界处理。
拿下 WeRide OA offer的关键助攻
我们在辅导 WeRide、TuSimple、Cruise、Zoox 等自动驾驶公司 OA / 面试时,都会提供 远程无痕联机 + 语音助攻系统。确保所有测试用例 100% 通过,不通过所有测试用例不收费。我们通过远程控制软件 ToDesk 进行,确保无痕且不会被检测到。
这种方式特别适合 Hackerrank / Codility / CodeSignal 平台题型,
已经帮助多位同学在 WeRide、Cruise、MathWorks 等 OA 实现 首战全AC → 拿下面试邀请。
如果你最近也在准备自动驾驶 / Quant / 大厂 OA,可以了解下我们的OA助攻方案,
真正做到「不卡点、不失误、稳稳上岸」。