华为通用软件开发实习生面试题

本文分享了一次华为软件开发实习面试的技术面试题,题目要求使用C++编写找出一组字符串的最大公共前缀。作者在面试中采取了先找到最短字符串,然后逐个字符比较的方法,确保了时间和空间效率,并提供了现场编写的C++代码。
摘要由CSDN通过智能技术生成

技术面手撕代码的原题~

原题
要求用C++写

楼主比较菜面试时候又比较紧张面试官又看着我写,因此当场只写出来一个通用的解法,本以为面试官会让我优化时间复杂度,结果没有,只是测试了一下我的代码,每个测试点都通过了

我的想法是,因为要求最大公共前缀嘛,结果肯定不可能比这些字符串中最短的长,所以首先求出最短的字符串长度假设长度为n,只考虑每个字符串的前n个字符,一来是避免不必要的运算,二来是避免访问字符串的时候数组越界带来不必要的bug,然后以第一个字符串为基准,每次检查剩下所有字符串的第i个字符是否与第一个字符串的第i个相等,如果出现不等,说明之前的i个字符已经不是公共前缀了,直接退出循环取前i-1个字符返回即可

面试时候写的C++代码如下:

#include<iostream>
#include<vector>

using 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值