2024年leetcode面试经典算法题——1(3),致前端开发者

判断

回到题目,如果你真想检验一个人的水平。第一步先考察一下基本的编程基础,问几个基本的编程问题,可以和前端相关也可以无关。比如垃圾收集大致是怎么做的,setTimeout 大致做了什么(说会在另一个线程里执行回调的直接毙掉)。

第二步考察一下知识面,问问http、tcp的基本知识,dns是怎么工作的,或者常用框架的实现原理,看看候选人是不是除了自己的一亩三分地什么都不关心。

第三步考察hold业务逻辑的能力,从一个简单的注册页,或者查询页开始,先让说下代码的基本架构,然后需求、性能、可靠性、安全层层加码,看看能不能很快的反馈出解决方案。能对答如流的要么做过,要么对他来说这种复杂度的东西是小case。

前三步都没问题,基本上说明候选人已经还行了,但是行到什么程度,不知道。如果想找比较厉害的,就增加个第四步,亮点项目考察。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以我们在回答面试官问题时,有一个清晰的逻辑思路,清楚知道自己在和面试官说项目说技术时的话就好了,我整理一套前端面试题分享给大家,希望对即将去面试的小伙伴们有帮助!

    if len_s == len_t:
        if s == t:
            return True
        else:
            return False
    index = 0
    
    for i in range(len_s):
        if s[i] in t[index:]:
            # 更新下标
            index = t[index:].index(s[i]) + 1 + index
        else:
            return False
        
    else:
        return True

if name == ‘__main__’:
s = Solution()
a = “abc”
b = “ahbgdc”
print(s.isSubsequence(a, b))


C++代码



#include

using namespace std;

class Solution {
public:
bool isSubsequence(string s, string t) {
// size()获取字符的长度
int s_len = s.size();
int t_len = t.size();
int index = 0;
if(s_len > t_len) return false;
if(s_len == t_len){
if(s == t) return true;
else return false;
}
// substr()第一个参数是起始下标,第二个元素是长度,该函数是返回一个字符串的子串
// find()函数是找字符串中是否包含某个字符,若包含则返回下标,否则返回std::string::npos
for(int i = 0; i < s_len; i++){
if (t.substr(index, t_len - index).find(s[i]) != std::string::npos)
{
index = t.substr(index, t_len - index).find(s[i]) + 1 + index;

            }
        else
            return false;
    }
    return true;

}

};

int main()
{
string a = “abc”;
string b = “ahbgdc”;
Solution s;

cout << s.isSubsequence(a, b) << endl;
return 0;

}


### 383. 赎金信


给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。


如果可以,返回 true ;否则返回 false 。


magazine 中的每个字符只能在 ransomNote 中使用一次。


**示例 1:**



> 
> 输入:ransomNote = “a”, magazine = “b”  
>  输出:false
> 
> 
> 


**示例 2:**



> 
> 输入:ransomNote = “aa”, magazine = “ab”  
>  输出:false
> 
> 
> 


**示例 3:**



> 
> 输入:ransomNote = “aa”, magazine = “aab”  
>  输出:true
> 
> 
> 


**提示:**


* 1 <= ransomNote.length, magazine.length <= 10^5
* ransomNote 和 magazine 由小写英文字母组成  
 Python代码



class Solution(object):
def canConstruct(self, ransomNote, magazine):
“”"
:type ransomNote: str
:type magazine: str
:rtype: bool
“”"
# 思路:遍历ransomNote的元素c,每次删除magazine中的c。
# 若magazine长度 - ransomNote长度 = 删除后的magazine长度,则返回True
r_len = len(ransomNote)
m_len = len(magazine)
for i in range(r_len):
magazine = magazine.replace(ransomNote[i], “”, 1) # 删除一个字符
if m_len - r_len == len(magazine):
return True
else:
return False

if name == ‘__main__’:
s = Solution()
ransomNote = “a”
magazine = “b”
print(s.canConstruct(ransomNote, magazine))


C++代码



#include

using namespace std;

class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int r_len = ransomNote.size();
int m_len = magazine.size();
for(int i = 0; i < r_len; i++){
if (magazine.find(ransomNote[i]) != std::string::npos)
{
int index = magazine.find(ransomNote[i]);
// erase()函数第一个参数是起始下标,第二个参数是要删除的长度,该函数用于删除字符串中的字串
magazine.erase(index, 1);
}

    }
    if (m_len - r_len == magazine.size()) return true;
    else return false;

}

};

int main()
{
string a = “aa”;
string b = “ab”;
Solution s;

cout << s.canConstruct(a, b) << endl;
return 0;

}


### 205. 同构字符串


给定两个字符串 s 和 t ,判断它们是否是同构的。


如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。


每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。


**示例 1:**



> 
> 输入:s = “egg”, t = “add”  
>  输出:true
> 
> 
> 


**示例 2:**


###  总结

大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**

![](https://img-blog.csdnimg.cn/img_convert/718310d106ab948d6f467d78e08b1aed.png)

质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**

![](https://img-blog.csdnimg.cn/img_convert/718310d106ab948d6f467d78e08b1aed.png)

  • 31
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值