扫码关注公众号

前端算法考察之字符串
03-22
200观看
01

下面哪个流类属于面向字符的输入流( )

正确答案是DJava的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。面向字节的操作为以8位为单位对二进制的数据进

来自:字符串算法-字符串算法
02

怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?

代码如下所示:Strings1="你好";Strings2=newString(s1.getBytes("GB2312"),"ISO-885

来自:字符串算法-字符串算法
03

请实现javascript中的indexOf功能,判断一个字符串a中是否包含另一个字符串b。
a)如果包含,需要返回匹配字符串b的位置

functionindexOf(strA,strB){varlenA=strA.length,lenB=strB.length;if(lenA<lenB){return-1;}elseif(lenA==lenB){return0;}else{for(varj=0;j<lenA;j++){if(strA.charAt(j)==strB[0]&&strA.substr(j,lenB)==strB){returnj;}}return-1;}}console.log(indexOf("hello","el"));//1

来自:字符串算法-字符串算法
04

给定两个树,判断树2是否为树1的子树,是则返回true

把一棵树序列化为字符串(字符数组)如果str2是str1的子串则T2也是T1的子树。java参考代码如下:packagezuoshen1;publicclassKMP_T1SubtreeEqualsT2{publicstaticclassTreeNode{intval;TreeNodeleft;TreeNoderight;publicTreeNode(intval){this.val=val;this.left=null;this.right=null;}}publicstaticStringpreorder(TreeNoderoot){StringBuildersb=newStringBuilder();precore(root,sb);returnsb.toString();}publicstaticvoidprecore(TreeNoderoot,StringBuildersb){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);}publicstaticbooleanisSubtree(TreeNoderoot1,TreeNoderoot2){Strings1=preorder(root1);Strings2=preorder(root2);returnKMP.getIndexOf(s1,s2)!=-1?true:false;}publicstaticvoidmain(String[]args){TreeNoderoot=newTreeNode(1);root.left=newTreeNode(2);root.right=newTreeNode(3);root.left.left=newTreeNode(4);root.left.right=newTreeNode(5);root.right.left=newTreeNode(6);root.right.right=newTreeNode(7);TreeNodeother=newTreeNode(3);other.left=newTreeNode(6);other.right=newTreeNode(7);System.out.println(preorder(root));System.out.println(preorder(other));System.out.println(isSubtree(root,other));}}

来自:字符串算法-字符串算法
05

给定一个字符串,如何加最短的字符(只能在原始串的后面进行添加)使其构成一个长的字符串且包含两个原始字符串。

其实就是最大前后缀长度数组~e.g.abcabc---->abcabcabc最少增加3个多求一位nextArr可以看出之前4个复用所以再添一位就好~总结:在KMP中nextArr数组基础上多求一位终止位将不是的补上即可packagezuoshen1;publicclassKMP_ShortestHaveTwice{publicstaticStringanswer(Stringstr){if(str==null)returnnull;char[]s=str.toCharArray();if(str.length()==1)returnstr+str;if(str.length()==2)returns[0]==s[1]?str+String.valueOf(s[0]):str+str;intcn=getNext(s);returnstr+str.substring(cn);}publicstaticintgetNext(char[]match){if(match==null||match.length<2){return-1;}int[]next=newint[match.length+1];//比KMP多一位next[0]=-1;next[1]=0;intcn=0;intpos=2;while(pos<match.length){if(match[pos-1]==match[cn]){next[pos++]=++cn;}elseif(cn>0){cn=next[cn];}else{next[pos++]=0;}}returnnext[next.length-1];}publicstaticvoidmain(String[]args){System.out.println(answer("a"));System.out.println(answer("aa"));System.out.println(answer("ab"));System.out.println(answer("aba"));System.out.println(answer("abc"));}}

来自:字符串算法-字符串算法
课程
专栏
算法-字符串算法-字符串算法
3专栏
1课程
5 试题