温哥华Atlassian面试经历分享:LeetCode 387算法问题及Python代码解析 
大家好!最近刚参加了Atlassian温哥华办公室的面试,想分享一下其中一道算法题的解题思路,希望能帮助到也在准备面试的小伙伴们~
题目回顾:LeetCode 387 - First Unique Character in a String
题目要求:给定一个字符串,找到第一个不重复的字符并返回其索引,如果不存在则返回-1。
示例:
- Input: “leetcode” → Output: 0 (因为’l’是第一个不重复字符)
- Input: “loveleetcode” → Output: 2 (因为’v’是第一个不重复字符)
Python解法分析 
方法一:使用字典统计频率
def firstUniqChar(s: str) -> int:
freq = {}
for char in s:
freq = freq.get(char, 0) + 1
for i, char in enumerate(s):
if freq == 1:
return i
return -1
时间复杂度:O(n),需要遍历字符串两次
空间复杂度:O(1),因为英文字符最多26个(假设只有小写字母)
方法二:使用Counter优化代码
from collections import Counter
def firstUniqChar(s: str) -> int:
count = Counter(s)
for idx, char in enumerate(s):
if count == 1:
return idx
return -1
面试中的讨论 
面试官还问了一些follow-up问题:
- 如果字符串非常大(无法全部加载到内存)怎么办?
- 如何优化空间复杂度?
- 如果字符串是Unicode字符集如何处理?
个人心得 
- 这题看似简单但考察了对数据结构的理解
- 在面试中要主动讨论时间和空间复杂度
- 准备一些常见的follow-up问题很重要
希望对大家有帮助!如果有任何问题欢迎在评论区讨论~
#Atlassian #面试经验 #算法题 #Python #LeetCode387