📅  最后修改于: 2023-12-03 15:36:45.306000             🧑  作者: Mango
本文是我在光辉网络应聘研发工程师时的面试经历总结。这是第二套面试题目,主要考察了我的编程能力和算法思维能力。
写一个函数,返回一个无序整数数组中,找出第三大的数。如果不存在第三大的数,则返回最大的数。
首先我们可以将数组从大到小进行排序,然后从第一个元素开始,记录不重复的数的个数。当不重复的数的个数等于3时,返回当前数字即可;否则返回数组的第一个元素。
def third_largest_number(nums):
nums = list(set(nums))
nums.sort(reverse=True)
if len(nums) >= 3:
return nums[2]
else:
return nums[0]
给定一个字符串,写一个函数判断该字符串是否是回文字符串。回文字符串是指正读和反读都相同的字符串。
我们可以使用双指针方法进行判断,一个指针从前往后遍历,一个指针从后往前遍历。判断两个指针所指的字符是否相同,如果不同,则该字符串不是回文字符串;如果都遍历完了,则该字符串是回文字符串。
def is_palindrome(s):
i, j = 0, len(s)-1
while i < j:
if s[i] != s[j]:
return False
i += 1
j -= 1
return True
给定两个字符串s和t,写一个函数判断它们是否是同构字符串。同构字符串是指一个字符串中的字符可以被替换成另一个字符,使得字符串变成另一个字符串。
我们可以使用一个字典来存储s和t中每个字符的映射关系。遍历s和t中的每个字符,在字典中查找对应关系,如果没有找到,则添加新的映射关系;如果找到了,但是对应关系不一致,则返回False;如果遍历完了,没有出现不一致的情况,则返回True。
def is_isomorphic(s, t):
if len(s) != len(t):
return False
d = {}
for i in range(len(s)):
if s[i] not in d:
d[s[i]] = t[i]
elif d[s[i]] != t[i]:
return False
return True
本次面试考察了我的编程能力和算法思维能力,让我对自己的不足和优点有了更深刻的认识。通过这次面试,我也学到了很多新的知识和技巧,相信这对我的以后的工作也有很大的帮助。感谢光辉网络给我这次机会,希望能够成为贵司的一员。