实验四串操作

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验报告四串操作一、实验目的:(1)掌握串的定义、术语。(2)掌握串的基本操作算法。(3)掌握串的匹配算法。二、实验内容:1.在常量串MyString类中,增加以下方法,并求各算法的时间复杂度。publicMyStringtrim()//删除串中所有空格publicchar[]toCharArray()//返回字符数组publicMyStringtoLowerCase()//返回将大写字母转换成小写字母的字符串publicMyStringtoUpperCase()//返回将小写字母转换成大写字母的字符串publicMyStringreplace(charold,charnewc)//用字符newc替换串中的字符oldpublicBooleanequals(Objectobj)//判断两个串是否相等publicBooleanequalsIgnoreCase(String1str)//判断两个串是否相等,忽略大小写publicintcompareTo(MyStringstr)//比较两个串大小,实现Comparable接口publicintcompareToIgnoreCase(MyStringstr)//比较两个串大小,忽略大小写publicBooleanstartsWith(MyStringprefix)//判断prefix是否前缀子串publicBooleanendsWith(MyStringsuffix)//判断suffix是否后缀子串源代码:packageQ1;importjava.lang.*;publicclassMyString{publicchar[]value;publicStringstr;publicMyStringtrim(){//删除串中所有空格O(N*N)for(inti=0;ithis.value.length;i++){if(this.value[i]==''){for(intj=i;jthis.value.length;j++)this.value[j]=this.value[j+1];}}returnthis;}publicchar[]toCharArray(){//返回字符数组O(1)returnthis.value;}publicMyStringtoLowerCase(){//返回将大写字母转换成小写字母的字符串O(N)for(inti=0;ithis.value.length;i++){if(this.value[i]='A'&&this.value[i]='Z'){this.value[i]=(char)(this.value[i]+32);}}returnthis;}publicMyStringtoUpperCase(){//返回将小写字母转换成大写字母的字符串O(N)for(inti=0;ithis.value.length;i++){if(this.value[i]='a'&&this.value[i]='z'){this.value[i]=(char)(this.value[i]-32);}}returnthis;}publicMyStringreplace(charold,charnewc){//用字符newc替换串中的字符oldO(N)for(inti=0;ithis.value.length;i++){if(this.value[i]==old)this.value[i]=newc;}returnthis;}publicbooleanequals(MyStringstr){//判断两个串是否相等O(N)booleanflag=true;if(this.value.length==str.value.length){for(inti=0;ithis.value.length;i++){if(this.value[i]!=str.value[i]){flag=false;break;}}}elsereturnflag=false;returnflag;}publicbooleanequalsIgnoreCase(MyStringstr){//判断两个串是否相等,忽略大小写O(N)booleanflag=true;if(this.value.length==str.value.length){for(inti=0;ithis.value.length;i++){if(this.value[i]='a'&&this.value[i]='z'||this.value[i]='A'&&this.value[i]='Z'){if(str.value[i]='a'&&str.value[i]='z'||str.value[i]='A'&&str.value[i]='Z'){if(this.value[i]!=str.value[i]||this.value[i]+32!=str.value[i]||this.value[i]!=str.value[i]+32){flag=false;break;}}elseif(this.value[i]!=str.value[i]){flag=false;break;}}elseif(this.value[i]!=str.value[i]){flag=false;break;}}}elsereturnflag=false;returnflag;}publicintcompareTo(MyStringstr){//比较两个串大小,实现Comparable接口O(N)intlength=0;inttemp=-1;if(this.value.length=str.value.length)length=this.value.length;elselength=str.value.length;for(inti=0;ilength;i++){if(this.value[i]!='\0'&&str.value[i]!='\0'){if(this.value[i]str.value[i]){temp=0;break;//0=this}if(this.value[i]str.value[i]){temp=1;break;//1=str}}if(this.value[i]!='\0'&&str.value[i]=='\0'){temp=0;break;}if(this.value[i]=='\0'&&str.value[i]!='\0'){temp=1;break;}elsetemp=2;//this=str}returntemp;}publicintcompareToIgnoreCase(MyStringstr){//比较两个串大小,忽略大小写O(N)this.value=this.toLowerCase().value;str.value=str.toLowerCase().value;intlength=0;inttemp=-1;if(this.value.length=str.value.length)length=this.value.length;elselength=str.value.length;for(inti=0;ilength;i++){if(this.value[i]!='\0'&&str.value[i]!='\0'){if(this.value[i]str.value[i]){temp=0;break;//0=this}if(this.value[i]str.value[i]){temp=1;break;//1=str}}if(this.value[i]!='\0'&&str.value[i]=='\0'){temp=0;break;}if(this.value[i]=='\0'&&str.value[i]!='\0'){temp=1;break;}elsetemp=2;//this=str}returntemp;}publicBooleanstartsWith(MyStringprefix){//判断prefix是否前缀子串O(N)booleanflag=true;if(this.value.length=prefix.value.length){for(inti=0;iprefix.value.length;i++)if(this.value[i]!=prefix.value[i]){flag=false;break;}}elseflag=false;returnflag;}publicBooleanendsWith(MyStringsuffix){//判断suffix是否后缀子串O(N)booleanflag=true;if(this.value.length=suffix.value.length){for(inti=0,j=this.value.length-suffix.value.length;isuffix.value.length;i++,j++)if(this.value[j]!=suffix.value[i]){flag=false;break;}}elseflag=false;returnflag;}}2.统计在一个串中各字符的出现次数。源代码:packageQ2;publicclassMyString{publicstaticint[]fun(Stringstr){charc;int[]account=newint[128];for(inti=0;istr.length();i++){c=str.charAt(i);account[c]++;}returnaccount;}publicstaticvoiddisp(int[]account){charc;for(inti=0;iaccount.length;i++){if(account[i]!=0){c=(char)i;System.out.println(c++account[i]);}}System.out.println();}publicstaticvoidmain(String[]args){Stringstr1=newString(Goodmorning!);Stringstr2=newString(Shanghai2010);disp(fun(str1));disp(fun(str2));}}测试实例:str1=“Goodmorning!”str2=“Shanghai2010”粘贴测试结果:3.找出两个字符串中所有共同的字符。源代码:packageQ3;publicclassMyString{publicstaticint[]account(Stringstr){charc;int[]account=newint[128];for(inti=0;istr.length();i++){c=str.charAt(i);account[c]=1;}returnaccount;}publicstaticint[]compare(int[]account,Stringstr){charc;for(inti=0;istr.length();i++){c=str.charAt(i);if(account[c]==1)account[c]=2;}returnaccount;}publicstaticvoiddisp(int[]account){charc;for(inti=0;iaccount.length;i++){if(account[i]==2){c=(char)i;System.out.println(c);}}System.out.println();}publicstaticvoidmain(String[]args){Stringstr1=newString(aaccb*be!);Stringstr2=newString(ab!cde*g);int[]accou

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功