【校招VIP】前端算法考察之字符串

news2024/9/20 12:40:26

考点介绍
说到字符串算法我们最先想到的就是模式匹配问题,所谓模式匹配就是字符串匹配问题,就是在一个长的主串中寻找子串的过程,如果我们直接暴力匹配那就是最基本的BF算法;KMP算法与BF算法最大的区别区别就是主串不进行回溯。

前端算法考察之字符串-相关题目及解析内容可点击文章末尾链接查看!

一、考点题目

1.下面哪个流类属于面向字符的输入流( )
A.BufferedWriter
B.FileInputStream
C.ObjectInputStream
D. InputStreamReader

正确答案是 D  Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类……

2.怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?
解答:代码如下所示:  String s1 = "你好";
String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1")……

3.请实现javascript中的indexOf功能,判断一个字符串a中是否包含另一个字符串b。
解答:a)如果包含,需要返回匹配字符串b的位置;b)如果不包含,需要返回-1
例如 indexOf("hello","el") returns 1;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

function indexOf(strA, strB) {

    var lenA = strA.length,

        lenB = strB.length;

    if (lenA < lenB) {

        return -1;

    } else if (lenA == lenB) {

        return 0;

    } else {

        for (var j = 0; j < lenA; j++) {

            if (strA.charAt(j) == strB[0] && strA.substr(j, lenB) == strB) {

                return j;

            }

        }

        return -1;

    }

}

console.log(indexOf("hello", "el")); //1

4.给定两个树,判断树2是否为树1的子树,是则返回true
解答:把一棵树序列化为字符串(字符数组) 如果str2是str1的子串 则T2也是T1的子树。
java参考代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

package zuoshen1;

  

public class KMP_T1SubtreeEqualsT2 {

public static class TreeNode{

int val;

TreeNode left;

TreeNode right;

public TreeNode(int val){

this.val=val;

this.left=null;

this.right=null;

}

}

public static String preorder(TreeNode root){

StringBuilder sb=new StringBuilder();

precore(root,sb);

return sb.toString();

}

public static void precore(TreeNode root,StringBuilder sb){

if(root==null)

return;

sb.append(root.val);

sb.append("#");

if(root.left!=null){

precore(root.left,sb);

}

if(root.right!=null)

precore(root.right,sb);

……

5.给定一个字符串,如何加最短的字符(只能在原始串的后面进行添加)使其构成一个长的字符串且包含两个原始字符串。
解答:其实就是最大前后缀长度数组~ e.g. abcabc ---->abcabcabc 最少增加3个
多求一位nextArr 可以看出之前4个复用 所以再添一位就好~
总结: 在KMP中nextArr数组基础上 多求一位终止位 将不是的补上即可

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

package zuoshen1;

  

public class KMP_ShortestHaveTwice {

public static String answer(String str){

if(str==null) return null;

char[] s=str.toCharArray();

if(str.length()==1)

return str+str;

if(str.length()==2)

return s[0]==s[1]?str+String.valueOf(s[0]):str+str;

int cn=getNext(s);

return str+str.substring(cn);

}

public static int getNext(char[] match){

if(match==null||match.length<2){

return -1;

}

……

二、考点文章

1.【校招VIP】字符串算法合集
说到字符串算法我们最先想到的就是模式匹配问题,所谓模式匹配就是字符串匹配问题,就是在一个长的主串中寻找子串的过程,如果我们直接暴力匹配那就是最基本的BF算法,也就是从主串的第一个字符和子串的第一个字符匹配,如果配对成功二者都继续比较后继的字符,否则子串从头开始,主串从第二个字符开始,一步步重复上述过程,直到配对成功或者到主串尾结束,这种算法有点靠天的感觉,如果运气好了,每一次主串和子串不匹配的时候都是第一个字符就不匹配,那么时间复杂度就是O(n+m),那还可以,但如果运气不好的话,每次主串和子串不成功的匹配都发生在子串T的最后一个字符的位置如主串S为“aaaaaaaaab”子串T为“aaab”这样时间复杂度就变成了O(n*m),那就非常不友好了……

2.【校招VIP】前端算法精选-字符串系列
很多前端工程师甚至很多研发工程师都缺乏数据结构和算知识,前端算法精选系列是一个针对常见的、高频的算法题做的一个算法解析系列,文章会给出详细的思路和解答,希望可以帮助到你。

三、考点视频

前端校招的特点、考点和职业发展
前端是IT校招中目前性价比最高的职位,对所学专业要求不高,考点难度较小,且需求量大。校招时分为一二线公司和普通公司,所对应的校招要求、工资和职业发展都是有差别的……

前端算法考察之字符串-相关题目及解析内容可点击下方链接查看:
前端算法考察之字符串-移动端链接
前端算法考察之字符串-PC端链接

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PaddleOCR学习笔记1-初步尝试

尝试使用PaddleOCR方法&#xff0c;如何使用自定义的模型方法&#xff0c;参数怎么配置&#xff0c;图片识别尝试简单提高识别率方法。 目前仅仅只是初步学习下如何使用PaddleOCR的方法。 一&#xff0c;测试识别图片&#xff1a; 1.png : 正确文本内容为“哲学可以帮助辩别现…

向左偏移的云应用容器监控方法

向左偏移是一种在软件开发生命周期的早期强调测试、监控和自动化的软件开发和操作方法。向左偏移方法的目标是通过尽早发现问题并迅速解决&#xff0c;从而预防问题的发生。 当您尽早发现可扩展性问题或错误时&#xff0c;解决它将更加迅速和经济高效。将低效的代码移动到云容…

使用Jsmooth打包JavaFx程序为EXE文件

配置IDEA 第一步&#xff1a; 第二步&#xff1a; MANIFEST.MF的文件路径&#xff0c;必须在resources文件夹中&#xff0c;如果没有&#xff0c;就创建一个。 第三步&#xff1a;配置项目所需jar包的相对路径 最后&#xff1a; 点击确定后&#xff0c;编译Jar 配置Jsmooth …

Docker从认识到实践再到底层原理(四-1)|Docker镜像仓库|超详细详解

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

k8s node环境部署(三)

1、添加node1、node2环境 前面配置master环境的截图最后一段 复制下来 分别在node主机执行 kubeadm join 192.168.37.132:6443 --token p5omh3.cqjqt8ymrwkdn2fc \ --discovery-token-ca-cert-hash sha256:608a1cbadd060cfdeac2fae84c19609061b750ab51bf9a19887ff7ea…

恒运资本:消费电子概念再爆发,冠石科技三连板,捷荣技术9日大涨127%

消费电子概念8日盘中再度走高&#xff0c;截至发稿&#xff0c;利和兴涨近15%&#xff0c;日久光电、冠石科技、捷荣技能、华映科技、东睦股份等涨停&#xff0c;大富科技涨超7%。 值得注意的是&#xff0c;冠石科技已接连3日涨停&#xff0c;公司昨日晚间发布危险提示称&…

数字钥匙关键技术:UWB(超宽带)实现原理一文讲透

在之前的文章《一文讲透超宽带&#xff08;UWB&#xff09;前世今生》中&#xff0c;我们从起源、定义、标准、发展、应用等角度概述了UWB技术。根据UWB的特性&#xff0c;其基础功能分为&#xff1a;数据传输、雷达成像、测距定位。接下来我们将概述其数据传输和雷达成像功能&…

YOLOV7改进-对小目标有效的BiFormer注意力机制

如果要在sppcspc后面加一个注意力模块BiFormer 1、 普通加 1、models-common.py搜这个模块 2、直接加 3、全部复制下来&#xff0c;models新建文件 4、common导入进来 5、填上一层的输出通道数 2、模块里加 难点&#xff1a;在配置文件找到对应的这一块 yolov7x中 1、…

GE IS220PDIAH1A 336A4940CSP1 控制主板模块

GE IS220PDIAH1A 336A4940CSP1 是一款控制主板模块&#xff0c;通常用于工业自动化和控制系统中。以下是可能与这种控制主板模块相关的一些产品功能&#xff1a; 信号处理&#xff1a; GE IS220PDIAH1A 336A4940CSP1控制主板模块通常负责信号处理&#xff0c;可以接收、放大、滤…

机器学习算法基础--线性回归算法

目录 1.算法求解步骤 2.算法核心代码 3.算法效果展示 1.算法求解步骤 线性回归算法流程: #1.数据导入与处理 #2.创建线性回归模型并拟合数据 #3.计算回归直线的斜率和截距 #4.预测 x5 时的y值 #5.进行进一步预测 #5.进行进一步预测 2.算法核心代码 #机器学习算法基础第一…

数据结构与算法:练习与实践的重要性

文章目录 为什么练习与实践很重要&#xff1f;1. 熟练应用2. 问题解决能力3. 代码效率4. 面试准备 如何练习与实践&#xff1f;1. 在线评测平台2. 自主设计数据结构3. 解决不同类型的问题 持续学习与实践 &#x1f389;欢迎来到数据结构学习专栏~数据结构与算法&#xff1a;练习…

MySQL使用CASE WHEN统计SQL语句代替子查询SQL统计,CASE WHEN常用写法,根据不同的条件对数据进行分类、分组和聚合

MySQL中&#xff0c;写一个CASE WHEN的统计SQL语句&#xff0c;代替子查询SQL统计语句 假设我们有一个名为"orders"的表&#xff0c;其中包含订单信息&#xff0c;包括订单号(order_id)、订单金额(order_amount)等列。我们想要统计每个订单级别的订单数量&#xff0c…

深度学习:基于循环神经网络RNN实现自然语言生成

目录 1 循环神经网络介绍 1.1 什么是循环神经网络 1.2 RNN的网络结构 1.3 RNN的工作原理 ​编辑 1.4 RNN的应用场景 2 基于RNN实现语句生成 2.1 句子生成介绍 2.2 基于pytorch实现语句生成 2.3 完整代码 2.4 该模型的局限 3 总结 1 循环神经网络介绍 1.1 什么是循环…

Anaconda - 操作系统安装程序 简要介绍

Anaconda 简要介绍 1. Anaconda 简介2. Anaconda 体系结构3. Anaconda 开发模型4. Anaconda 启动概述5. Anaconda 源码1. 接口2. 自定义组件3. 硬盘分区&#xff1a;使用python-blivet包4. Bootloader5. 各个步骤的配置&#xff1a;6. 安装软件包&#xff1a;7. 安装控制&#…

华为强势回归,苹果iPhone15ProMax独占潜望式镜头,预计销量受损

9月8日消息&#xff0c;据集邦咨询发布的产业洞察报告显示&#xff0c;苹果即将发布的iPhone 15 Pro Max将会独占潜望式镜头&#xff0c;该机型的占比预计将会达到40%左右。报告同时预估&#xff0c;今年iPhone 15系列手机的出货量将达到8000万&#xff0c;相比去年同期增长6%以…

无需公网IP教你如何外网远程访问管家婆ERP进销存

文章目录 前言 1.管家婆服务2. 内网穿透2.1 安装cpolar内网穿透2.2 设置远程访问 3. 固定访问地址4. 配置固定公网访问地址 前言 管家婆辉煌系列产品是中小企业进销存、财务管理一体化的典范软件&#xff0c;历经十余年市场的洗礼&#xff0c;深受广大中小企业的欢迎&#xff…

冠达管理:不要误读“房贷利率降低”

最近&#xff0c;人人都知道房贷利率降了&#xff0c;但如果细问“怎么降的、哪些城市降了、将产生何种影响”&#xff0c;恐怕不少人都是水中望月。正因此&#xff0c;部分房地产中介、营销机构利用购房者的信息不对称劣势&#xff0c;刻意夸张房贷利率下降关于楼市价格的影响…

16 除自身以外数组的乘积

除自身以外数组的乘积 题解1 前缀积*后缀积题解2 空间优化 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数…

YAPI的搭建和使用

https://www.cnblogs.com/yehuisir/p/12315137.html 1、#进入数据库 mongo 2、#进入admin库 use admin 3、#添加一个用户root&#xff08;此步骤可不执行&#xff09; db.createUser({user:"root",pwd:"123456abc.COM",roles:["root"]}) …

【合作 】联通、壳牌、联想、国金证券等众多企业签约 Eolink !

联通、壳牌、联想、华润置地、中国铁塔等多家知名企业签约 Eolink&#xff0c;携手落地 API 全生命周期管理&#xff0c;感谢广大企业对 Eolink 的信任和选择&#xff01; Eolink 致力于为企业提供最全面的 API 研发管理解决方案&#xff0c;提供高效、可靠的工具以及服务&…