2023 荣耀笔试题 0905

笔试时间:2023年9月5日 秋招

第一题

题目:算式求解

要开发一款教育类App,帮助幼儿在识数阶段做一百以内自然数[0.99]的加减法。屏慕上会显示“1”“2”“3”“4””“5”“6”“7”“8”“9”“0”“+”“-”“=”这些按钮,用户在按了若工按钮之后,如果按了“=”,则会把按“=”之前的字符串作为一个算式,计算结果,中间结果或最后结果可以为负数。

输入描述

输入为一个字符串,形如“23+86-6+37+24-8-13”。输入字符串中保证:

1.不会包含除“1”“2”“3”“4”“5”“6”“7"8”“9"“0”“+"“="之外的字符

2.长度不为0

3.不以“+”或“-”开始,不以“+"或“-”结束

4.不会出现连续两个或两个以上"+"

5.不会出现连续两个或两个以上"-"

6."+""-"不会相邻

7.操作数为范围为[0,99]

8.一定包含运算符 (“+”或“-”)

输出描述

算式结果,一个整数。

样例输入

1+2+99-10-10

样例输出

82

参考题解

参考逆波兰表达式的做法

C++:

#include <iostream>
#include <string>
using namespace std;
using ll = long long;

int main() {
    string expression;
    cin >> expression;
    int length = expression.size();
    ll result = 0;

    for (int i = 0; i < length; ++i) {
        int sign = 1;
        if (expression[i] == '-') {
            sign = -1;
            ++i;
        } else if (expression[i] == '+') {
            ++i;
        }
        int j = i;
        while (j < length && isdigit(expression[j])) {
            ++j;
        }
        int number = stoi(expression.substr(i, j - i));
        result = result + sign * number;
        if (j == length) {
            break;
        }
        i = j - 1;
    }

    cout << result;
    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        int n = s.length();
        long ans = 0;

        for (int i = 0; i < n; ++i) {
            int symbol = 1;
            if (s.charAt(i) == '-') {
                symbol = -1;
                ++i;
            } else if (s.charAt(i) == '+') {
                ++i;
            }
            int j = i;
            while (j < n && Character.isDigit(s.charAt(j))) {
                ++j;
            }
            int m = Integer.parseInt(s.substring(i, j));
            ans = ans + symbol * m;
            if (j == n) {
                break;
            }
            i = j - 1;
        }

        System.out.println(ans);
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

s = input()
n = len(s)
ans = 0
i = 0

while i < n:
    symbol = 1
    if s[i] == '-':
        symbol = -1
        i += 1
    elif s[i] == '+':
        i += 1
    j = i
    while j < n and s[j].isdigit():
        j += 1
    m = int(s[i:j])
    ans = ans + symbol * m
    if j == n:
    

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2023 秋招笔试题汇总解析 文章被收录于专栏

2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。

全部评论

相关推荐

2025-12-27 18:11
已编辑
门头沟学院 前端工程师
28双非鼠鼠第一份实习,感谢金山,感谢面试官张先生的赏识,也感谢自己很开心很开心(有没有待过的前辈,求摸鱼技巧bushi)timeline12.15&nbsp;投递12.16&nbsp;约面12.18&nbsp;一面&nbsp;半个小时后约二面12.19&nbsp;二面,口头oc12.24&nbsp;发offer一面1.&nbsp;开发页面中使用的布局方式2.&nbsp;flex:&nbsp;1&nbsp;是什么的缩写3.&nbsp;水平居中的方法4.&nbsp;tailwindcss&nbsp;的优势5.&nbsp;js&nbsp;的闭包6.&nbsp;打印结果的题,解释为什么(var&nbsp;定义&nbsp;i&nbsp;,setTimeout&nbsp;执行打印),使用&nbsp;let&nbsp;的打印结果7.&nbsp;箭头函数和普通函数的区别8.&nbsp;promise&nbsp;构造函数是同步还是异步9.&nbsp;内存泄漏的情况10.&nbsp;interface&nbsp;和&nbsp;type&nbsp;的区别11.&nbsp;react&nbsp;的&nbsp;key&nbsp;作用12.&nbsp;常用的钩子函数13.&nbsp;怎么避免不必要的渲染14.&nbsp;useeffect&nbsp;的使用场景15.&nbsp;react&nbsp;和&nbsp;vue&nbsp;怎么选择16.&nbsp;vue&nbsp;的&nbsp;data&nbsp;为什么用函数17.&nbsp;tcp&nbsp;为什么需要三次握手和四次挥手18.&nbsp;vite&nbsp;为什么比较快19.&nbsp;解释防抖节流和手写防抖函数,还有实现思路20.&nbsp;深浅拷贝的区别和手写深拷贝,讲实现思路反问了业务,反馈时间和学习建议二面基本上是围绕项目展开,根据项目的每一项,来给场景题问你会怎么做,跟基础相关的东西如下:1.&nbsp;虚拟列表的实现和原理2.&nbsp;zustand&nbsp;和&nbsp;context&nbsp;的区别3.&nbsp;vitest&nbsp;相关,写测试的话应该怎么做些什么?4.&nbsp;monorepo的细节问题5.&nbsp;做项目的动机6.&nbsp;事件委托和时间冒泡的区别有个点顺着问了我五个问题实在是答不下去了就是说感觉金山云这边面试虽然一面全是八股,但是二面还是要好好准备项目,做到能被深挖那么两三个问题的程度,鼠鼠也是运气很好,问的都是准备过的嘻嘻面试完之后还很期待这个面试官会不会是我mt或者ld,会很认真的听我说话,然后告诉我哪里有小问题,不知道是不是鼠鼠的错觉,感觉他看后辈的眼神都是带有欣赏的意味真的很复合我对mt/ld的幻想(bushi),但是后来发现他ip是北京的qwq有点点小失落,不过没关系,看隔壁某书感觉金山的节奏还挺慢的期待入职ing愿一切顺利,好运常伴吾身这里再吐槽一下流程,怎么!!这么!!慢!!急死我了急死我了!!鬼知道我从周一到接到offer这段时间有多煎熬,哎呀但是但是好在一切如愿
发面经攒人品
点赞 评论 收藏
分享
2025-12-19 21:53
门头沟学院 Java
想做OpenGL:不要一来就把自己定位这么低吧,把大厂当成目标,不断去学技术做项目,最后你至少能学到能找到中小厂的技术水平,你一上来就找这种两千块还要前后端都会的,其实对你用处不会很大,真去了也是打杂
点赞 评论 收藏
分享
评论
2
7
分享

创作者周榜

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