2021春招-tx后台开发二面

上来做了三个题,都是字符串,然后都A了,所以后面基本没问,就问了两个问题:

1.TCP三次握手,以及为什么不是两次

2.主键索引/非主键索引的叶子节点存储的内容(这个答的不好

三个字符串的题,第一个题直接暴力,问string数组的最长公共前缀是什么
第二个题双指针,求字符串中不含重复字符的最长字串
第三个也是双指针,求完美子串的个数,完美字串就是字串中包含整个字符串中出现过的所有字符(也就是说出现次数最少也要为1)

好多人问第三题解法,我在这里发一下qaq,写的不好,有更好的做法可以一起分享下:
#include <bits/stdc++.h>
using namespace std;
unordered_map<char,int> m;
unordered_set<string> cntset;
string s;
int cnt;
int l=0,r=0;
int al[26];
int main() {
    cin>>s;
    for(char c:s) if(m[c]==0) {m[c]++;cnt++;}
    int curcnt=0;
    while(r<s.size()){
        if(al[s[r]-97]==0){
            al[s[r]-97]++;
            curcnt++;
            if(curcnt==cnt) {cntset.insert(s.substr(l,r-l+1));}
            r++;
        }
        else{
            al[s[r]-97]++;
            if(curcnt==cnt){
                while(l<r){
                    al[s[l]-97]--;
                    if(al[s[l]-97]==0){
                        curcnt--;l++;break;
                    }
                    else{
                        cntset.insert(s.substr(l,r-l+1));l++;
                    }
                }
            }
            else{
                r++;
            }
        }
    }
    cout<<cntset.size();
    return 0;
}


#实习##面经##腾讯##硬件开发工程师#
全部评论
楼主好,请问没有问项目吗?
点赞 回复
分享
发布于 2021-03-21 16:18
请问是什么部门呀
点赞 回复
分享
发布于 2021-03-21 17:09
阿里巴巴
校招火热招聘中
官网直投
你好,我想问问第三题怎么做?能看看代码嘛?我看到用动态规划的
点赞 回复
分享
发布于 2021-03-21 18:19
同求第三题的解法~蟹蟹~
点赞 回复
分享
发布于 2021-03-22 19:09

相关推荐

6 24 评论
分享
牛客网
牛客企业服务