← 返回博客列表
LinkedIn

LinkedIn 高频面试题:不用 replace 做字符串替换 + 用户关系距离(Connection Distance)

2025-12-05

# LinkedIn 高频面试题:不用 replace 做字符串替换 + 用户关系距离(Connection Distance)

本文由 oavoservice 原创整理:两道常见小题,分别考察“线性扫描的字符串处理”和“社交网络图的最短距离”。

Question 1:不使用内置 replace 实现字符串替换

题目(改写版)

给定字符串 s、模式串 pat、替换串 rep,返回把 s 中所有 pat 替换成 rep 的新字符串,要求不调用语言内置的 replace

思路(双指针/滑动窗口)

核心就是自己写一遍“从左到右匹配”:

Python 实现


def replace_without_builtin(s: str, pat: str, rep: str) -> str:
    if pat == "":
        return s

    out = []
    i = 0
    m = len(pat)
    while i < len(s):
        if i + m <= len(s) and s[i:i+m] == pat:
            out.append(rep)
            i += m
        else:
            out.append(s[i])
            i += 1
    return "".join(out)

面试官常问


Question 2:LinkedIn Connection Distance(用户关系距离)

题目(改写版)

给定一个无向图:用户之间的连接关系(好友/同事),以及两个用户 srcdst,求两者之间的最短连接距离(最少边数)。

思路(BFS 最短路)

无权图最短距离就是 BFS:

Python 模板

from collections import deque
from typing import Dict, List


def connection_distance(graph: Dict[str, List[str]], src: str, dst: str) -> int:
    if src == dst:
        return 0
    if src not in graph or dst not in graph:
        return -1

    q = deque([src])
    dist = {src: 0}

    while q:
        u = q.popleft()
        for v in graph.get(u, []):
            if v in dist:
                continue
            dist[v] = dist[u] + 1
            if v == dst:
                return dist[v]
            q.append(v)

    return -1

面试官常追问


如果你在准备 LinkedIn 的 VO/OA,oavoservice 会把这类“基础题 + 追问扩展”训练到可快速落地表达。


需要面试真题? 立刻联系微信 Coding0201,获得真题