【2022 您所在的位置:网站首页 远近闻名的英文单词 【2022

【2022

2023-06-06 21:24| 来源: 网络整理| 查看: 265

恭喜发现宝藏!搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经,目前已更新至美团、微软… 作者@TechGuide【全网同名】 点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝

第一题:字符串压缩 题目描述

给定一段英文句子和一个英文单词列表。 英文句子包含英文单词和标点符号,其中:

英文单词只包含[a-zA-Z]范围内的字符;标点符号包括逗号、句号、双引号(双引号两边至少有一个空格)。

如果列表中有单词在句子中存在(大小写不敏感)且该单词未被双引号包含,则使用该单词在列表中的索引值(索引值从0开始)代替句子中的该单词,如果英文单词列表中存在重复的英文单词,则以该单词最后一次出现的索引值进行替换。

输入描述

第一行:一段英文句子 第二行:英文单词列表 提示: 每个英文单词长度在[150]范围内。 输入的英文句子长度在[0,10000]范围内。 输入的英文单词列表长度在[0,100000]范围内。英文句子中不会出现双引号不匹配的情况。

Hello world. Good Hello LOOP

解释:hello在英文句子中存在,则使用hello的索引值进行替换,得到结果为1w orld.

输出描述

替换后的英文句子

1world.

代码 CPP版本 #include using namespace std; mapaa; void change(string &s){ for(int i=0;i s[i]-=32; } } } bool check(char aa){ if(aa>='A' && aa='a' && aa // string s2; change(s1); // cout i++; while(i if(sentence[i]=='"'){ isInside = !isInside //开关 continue //引号不进行字典查询 } var str = sentence[i].replace(/[^a-zA-Z]/,"") //含有特殊字符的话toUpperCase()会报错,在这里卡了蛮久,属于是考场上学知识了 if(dictionary.includes(str.toUpperCase())){ //之前用for循环倒序查字典的,过80%,剩下的超时,所以优化,先查有没有 var j = sentence[i] = dictionary.lastIndexOf(str.toUpperCase()) //最后的索引,当然lastIndexOf() str.length==sentence[i].length? sentence[i]=j:sentence[i]=j+sentence[i][sentence[i].length-1] //通过对比长度来看有没有句号逗号,有的话取过来 } } console.log(sentence.join(" ")) // vx公众号关注TechGuide 实时题库 闪电速递 第二题:士兵的任务2 题目描述

士兵在迷宫中执行任务,迷宫中危机重重,他需要在在最短的时间内到达指定的位害。你可以告诉上兵他最少需要多长时间吗? 输入一个n*m的迷宫中,迷宫中0为路,1为墙,2为起点,3为终点,4为陷阱,6为炸弹。士兵只能向上下左右四个方向移动,如果路径上为墙,不能移动。已知每走一步需要花费1个单位的时间,走到陷阱上需要花费3个单位的时间,走到炸弹上将会激活炸弹将炸弹上下左右的墙炸为路。

注意点:

炸弹只能炸聚地,不会炸掉陷阱炸弹、陷阱只能发挥一次作用迷言为最大为25*25用例保证十兵一定有方法能到达终点

输入 输出 样例1 复制 输入:44 1021

输入描述

第一行:n和m 第二行开始:n*m的矩阵

4 4 1 1 1 1 1 6 2 1 1 1 0 1 1 3 1 1

输出描述

最少需要的单位时间

3

解释: 士兵在位置2,向左移动到炸弹上,会将炸弹周围的墙炸掉,向下走两步 即可到达终点

思路 代码 CPP版本 #include #include using namespace std; struct node { int x, y, t; node() {} node(int a, int b, int c) : x(a), y(b), t(c) {} bool operator0, 1, 0, -1}; int dy[4] = {1, 0, -1, 0}; int g[30][30], vis[30][30]; int n, m, ans = 0; priority_queue q; int main() { cin >> n >> m; for (int i = 0; i cin >> g[i][j]; if (g[i][j] == 2) { vis[i][j] = 1; q.push(node(i, j, 0)); } } } while (!q.empty()) { node cur = q.top(); q.pop(); for (int i = 0; i ans = cur.t + 1; break; } vis[tx][ty] = 1; if (g[tx][ty] == 4) q.push(node(tx, ty, cur.t + 3)); else if (g[tx][ty] == 6) { q.push(node(tx, ty, cur.t + 1)); for (int j = 0; j int n, m; //参数输入 cin >> n; cin >> m; //初始化站点数组,将起点和终点也纳入数组中 vector f(m+2, vector(2)); //起点的距离和等待时间都设为0 f[0][0] = 0; f[0][1] = 0; //终点的距离设为n,等待时间设为0 f[m+1][0] = n; f[m+1][1] = 0; //开始加入各个站点 for (int i = 1; i //将所有距离在1000以内的站点找出来 int k = i - 1; while (k > 0 && (f[i][0] - f[k][0] k++; } //对每个可以直接到达的站点进行遍历,找出最小的时间站点 int min_time = INT_MAX; for (; k cur_time++; } min_time = min(min_time, cur_time); } } getchar(); cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有