手撕代码

1.给定两个字符串s1和s2,统计s2子串在s1里面出现的个数?

int fun(char* s1, char *s2)
{
    int i(0), j(0), n(0), s1_len(0), s2_len(0);
    char *pti;  //定义一个指针,记录进入j循环的时候s1[i]的地址
    s1_len = strlen(s1);
    s2_len = strlen(s2);

    for (i = 0; i<s1_len; i++)
    {
        pti = &s1[i];  //取得此时s1[i]的地址
        for (j = 0; j<s2_len; j++)
        {
            if (*pti != s2[j])break;  //如果pti所指向的地址的内容与字符s2[j]不相等
            pti++;  //指针后移
            if (j == s2_len - 1)n++;  //s2所有字符与s1中从&s1[i]开始的字符匹配完毕        
        }
    }
    return n;
}
int main()
{
    char s1[1024];
    char s2[512];
    for (;;)
    {
        cout << "输入s1" << endl;
        cin.getline(s1, 1024);
        cout << "输入s2" << endl;
        cin.getline(s2, 512);
        cout << "s2在s1中出现的次数:" << fun(s1, s2) << "\n\n\n";
    }
    return 0;
}

根据上一段代码,分别设计黑盒测试案例以及白盒测试案例

说说黑盒测试案例的设计方法?说说白盒测试案例的设计方法?

2.场景题:现在收到一则短信,短信是火车票订票信息,包含订单号,车次,座位号,姓名等信息。现在要把这些信息存进数据库里面,应该选择哪些字段作为主键?

3.求二叉树的深度。讲一下思路?

作为测试,针对上面的代码,你怎么去验证这个功能,有哪些场景你写一下吧?你上面写的测试案例可以划分为几类呢?

找一套扑克牌里没有出现的牌

写代码,类似高考成绩,一个表中有很多数据(无序的),给你一个成绩,查出在表中的排名

1.找出这两个链表是否有相交的点
找出相交点,用set
双指针判断是否相交
2.判断链表有没有环,环起点在哪儿。

快慢指针
 ListNode* slow = head;
 ListNode* fast = head->next;

3.手撕topk,时间复杂度是多少。

class Solution {
public:
    vector<int> getLeastNumbers(vector<int>& arr, int k) {
        vector<int> res;
        priority_queue<int> pq;
        for(int num:arr)
        {
            pq.push(num);
            if(pq.size()>k)
            {
               pq.pop();
            }
        }
        while(!pq.empty())
        {
            res.push_back(pq.top());
            pq.pop();
        }
        return res;
    }
};

写个算法,实现抢红包随机获取金额的过程参考

链表反转
两数之和(leetcode第一题~、~)
判断一个字符串是否为另一个字符串子串(暴力写的)

股票最大利润
实现单链表前后交叉排序:1,2,3,4,5,6 变成 1,4,2,5,3,6

因式分解

有序二叉树,一种遍历方法使之有序,中序遍历。
非递归实现先序遍历

找无序数组中第k个数(一开始说用堆实现、后来我又想着用快排的partation实现)

算法题:从字符串S变到T,插入消耗2、删除消耗2、替换消耗3、求最小消耗
算法题:两个栈实现一个队列(实现push、pop、count三个函数)(简单)

strcpy的实现
给出两个链表,找出相同的链接。a->b->c->d->f、b1->a1->c1->d->f
二叉树的遍历方式,手写先序遍历(参考代码:https://www.cnblogs.com/anzhengyu/p/11083568.html)

两个字符串的最长公共子串(参考代码:https://www.cnblogs.com/anzhengyu/p/11166708.html)

查找二叉树最大深度
二叉树遍历

写代码判断IP地址(https://blog.csdn.net/u014259820/article/details/78833196?utm_source=distribute.pc_relevant.none-task)
在字符串中找出不重复字符的个数

找出两个只出现一次的数字,其余的数字都出现了两次

给n元钱,m个人,写个随机分钱的函数

两个栈实现一个队列

给个数组求连续子序列最大和
写一个程序;给一个数组,a【2 -2 3 3 6 -9 7】输出a【2 -2 3 -9 3 6 7】输入正负数都有数组,输出数组正负交替出现,多的那一类都放在后面;
给定一个数组 输出和为k的两个数的位置 a【2 7 3 5 11】k=9 输出 0 1 https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-2/
算法题:实现两个String字符串寻找最大公共子字符串
让写一个洗牌的函数,写完问我为啥那样写、再写一个打印牌的函数,问我洗完牌之后345不连在一起的概率 如何模拟一副扑克牌的洗牌过程
查找字符串中重复的子串,并输出重复的次数 https://blog.csdn.net/zouheliang/article/details/80649584
判断是否为平衡二叉树
找出一个字符串的最长不重复子串(https://www.cnblogs.com/linghu-java/p/9037262.html)

大数据的处理

在海量IP中找出访问次数最多的100个IP
(1)将ip地址放入多个小文件中,保证每种IP只出现在一个文件中
(2)利用hashmap统计每个小文件中IP出现的次数
(3)利用最小堆得到所有IP访问次数最多的100个
END

全部评论

相关推荐

点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务