科大讯飞8.6 A卷笔试编程题 全AC

第一题

    public int findEwordCount (String string) {
        int countE = 0;
        for (String word : string.split(" ")) {
            if (word.contains("e")) {
                countE++;
            }
        }
        return countE;
    }

第二题

四边形切成两个三角形就行。当时在想选择的两个三角形面积可能重叠。后来看到题目里有写四个点顺序连接可以构成四边形,所以选p1, p2, p3和p1,p3,p4。这样面积就不会重叠。四舍五入直接加0.5就行。三角形面积计算用海伦公式即可。

class Solution {
    public long getArea (Point p1, Point p2, Point p3, Point p4) {
        double area1 = calTri(p1, p2, p3);
        double area2 = calTri(p1, p3, p4);
        return (long) (area1 + area2 + 0.5);
    }

    private double calTri(Point p1, Point p2, Point p3) {
        double a = calLen(p1, p2);
        double b = calLen(p1, p3);
        double c = calLen(p2, p3);
        double p = (a + b + c) / 2;
        return Math.sqrt(p * (p - a) * (p - b) * (p - c));
    }

    private double calLen(Point p1, Point p2) {
        int x = p1.x - p2.x;
        int y = p1.y - p2.y;
        return Math.sqrt(x * x + y * y);
    }
}

第三题

dp没想出来。用的记忆化搜索+DFS。

class Solution {
    String str;
    public int findIflytek (String _str) {
        str = _str;
        return dfs(0, 'i');
    }
    private int MOD = 10000;
    private int[] memo = new int[70001];
    private int dfs(int i, char ch) {
        if (str.length() == i) {
            return 0;
        }
        int hash = i;
        if (ch == 'f') hash += MOD;
        else if (ch == 'l') hash += 2 * MOD;
        else if (ch == 'y') hash += 3 * MOD;
        else if (ch == 't') hash += 4 * MOD;
        else if (ch == 'e') hash += 5 * MOD;
        else if (ch == 'k') hash += 6 * MOD;
        if (memo[hash] != 0) return memo[hash];
        int count = 0;
        if (str.charAt(i) == ch) {
            if (ch == 'i') count += dfs(i + 1, 'f');
            else if (ch == 'f') count += dfs(i + 1, 'l');
            else if (ch == 'l') count += dfs(i + 1, 'y');
            else if (ch == 'y') count += dfs(i + 1, 't');
            else if (ch == 't') count += dfs(i + 1, 'e');
            else if (ch == 'e') count += dfs(i + 1, 'k');
            else if (ch == 'k') ++count;
        }
        int ans = count + dfs(i + 1, ch);
        memo[hash] = ans;
        return ans;
    }
}
#科大讯飞##笔试##Java##秋招##科大讯飞笔试是种什么体验#
全部评论
2 回复 分享
发布于 2022-08-06 21:27
请问笔试时长是多久啊?
点赞 回复 分享
发布于 2022-08-16 14:59
大佬约面了吗
点赞 回复 分享
发布于 2022-08-15 19:25
大佬笔试出结果吗
点赞 回复 分享
发布于 2022-08-09 07:24
第二题我也用的海轮公式,一开始选的点有问题,后来换了就AK了。
点赞 回复 分享
发布于 2022-08-06 23:09
第二题也全a了吗?
点赞 回复 分享
发布于 2022-08-06 22:09
太牛了
点赞 回复 分享
发布于 2022-08-06 21:24

相关推荐

2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题// 实现一个解析 url 参数的函数function parseUrl(urlStr) {// TODO}parseUrl('*********************************************');// 返回 {a: 1, b: 2, c: 3}追问:在链接里见过什么部分?用 hash 路由的话放在哪第二题// 考虑有一个异步任务要执行,返回 Promise,这个任务可能会失败,请实现 retry 方法,返回新方法,可以在失败后自动重试指定的次数。/*** 异步任务重试* @param task 要执行的异步任务* @param times 需要重试的次数,默认为 3 次*/function retry(task, times = 3) {// TODO: 请实现}// ---------------测试示例 ----------------// 原方法const request = async (data) => {// 模拟失败if (Math.random() < 0.7) {throw new Error('request failed');}const res = await fetch('https://jsonplaceholder.typicode.com/posts', {method: 'POST',body: JSON.stringify(data),});return res.json();}// 新的方法const requestWithRetry = retry(request);// 使用async function run() {const res = await requestWithRetry({ body: 'content' });console.log(res);}run();第三题就是给 retry 函数添加类型注释,用到泛型第四题:在组件库中将 Alert 用 api 的形式实现(应该就是 message 这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
01-14 16:23
广州商学院 Java
双非后端失败第N人:如果准备好了可以直接投字节,字节是最不看学历的,只要想面,大概率都能给你约面。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
12
34
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务