软件工程师面试题与解题技巧.docxVIP

  • 1
  • 0
  • 约5.65千字
  • 约 17页
  • 2026-10-16 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年软件工程师面试题与解题技巧

一、编程题(共5题,每题20分,总分100分)

背景:针对国内互联网行业对高效算法和实际工程能力的重视,以下题目侧重于算法设计、数据结构和系统架构。

1.剑指Offer系列:字符串的子串查找(20分)

题目:

给定两个字符串`source`和`target`,请实现一个函数,返回`target`在`source`中第一次出现的起始索引。如果`target`不存在于`source`中,返回-1。要求时间复杂度O(n)。

示例:

plaintext

输入:source=abscdefg,target=cde

输出:2

输入:source=abc,target=def

输出:-1

解题思路:

可以使用KMP(Knuth-Morris-Pratt)算法,通过预处理`target`构建部分匹配表(PartialMatchTable),实现O(n)的时间复杂度。

参考代码(Python):

python

defkmp_search(source:str,target:str)-int:

ifnottarget:

return0

构建部分匹配表

defbuild_lps(target:str)-list:

lps=[0]len(target)

len

文档评论(0)

1亿VIP精品文档

相关文档