数据结构实验四 串操作
更新时间:2023-03-15 22:48:01 阅读量: 教育文库 文档下载
- 数据结构实验四推荐度:
- 相关推荐
实验报告四 串操作
班级: 姓名: 学号: 专业:
一、 实验目的:
(1) 掌握串的定义、术语。 (2) 掌握串的基本操作算法。 (3) 掌握串的匹配算法。 二、 实验内容:
1. 在常量串MyString类中,增加以下方法,并求各算法的时间复杂度。 public MyString trim() //删除串中所有空格 public char[] toCharArray() //返回字符数组
public MyString toLowerCase() //返回将大写字母转换成小写字母的字符串 public MyString toUpperCase() //返回将小写字母转换成大写字母的字符串
public MyString replace(char old, char newc) //用字符newc替换串中的字符old public Boolean equals(Object obj) //判断两个串是否相等
public Boolean equalsIgnoreCase(String1 str) //判断两个串是否相等,忽略大小写 public int compareTo(MyString str) //比较两个串大小,实现Comparable接口 public int compareToIgnoreCase(MyString str) //比较两个串大小,忽略大小写 public Boolean startsWith(MyString prefix) //判断prefix是否前缀子串 public Boolean endsWith(MyString suffix) //判断suffix是否前缀子串 源代码:
package Word1;
public class MyString {
char[] str;
public MyString trim() //删除串中所有空格 { }
public char[] toCharArray() { }
public MyString toLowerCase() //返回将大写字母转换成小写字母的字符串 {
for(int i=0;i if(str[i]>=65 && str[i]<=90 ){ str[i]=(char) (str[i]+32); return str; //返回字符数组 char[] n=new char[str.length]; int cou=0; for(int i=0;i if(str[i]!=' '){ } n[cou]=str[i]; cou++; } } } return this; public MyString toUpperCase() //返回将小写字母转换成大写字母的字符串 { } public MyString replace(char old, char newc) //用字符newc替换串中的字符{ } public boolean equals(Object obj) //判断两个串是否相等 { } public boolean equalsIgnoreCase(String str1)//判断两个串是否相等,忽略大小写 { char[] c=new char[str1.length()]; if(obj instanceof String){ } return true; String s=obj.toString(); char[] c=new char[s.length()]; for(int i=0;i c[i]=s.charAt(i); return false; for(int i=0;i if(c[i]!=str[i]) return false; if(c.length!=str.length) else{ for(int i=0;i return this; if(str[i]==old) str[i]=newc; for(int i=0;i return this; if(str[i]>=97 && str[i]<=122 ){ } str[i]=(char) (str[i]-32); old } for(int i=0;i return true; c[i]=str1.charAt(i); return false; for(int i=0;i if(str[i]>=65 && str[i]<=90 ){ } else{ } if(c[i]!=str[i] && c[i]!=str[i]-32) return false; if(c[i]!=str[i] && c[i]!=str[i]+32) return false; if(c.length!=str.length) else{ public int compareTo(MyString str) //比较两个串大小,实现Comparable接口 { int c; if(this.str.length==str.str.length) } else{ c=this.str.length; for(int i=0;i if(this.str[i]==str.str[i]) continue; if(this.str[i]>str.str[i]) c=str.str.length; c=str.str.length; for(int i=0;i return 0; if(this.str[i]==str.str[i]) } continue; return 0; return 1; if(this.str[i]>str.str[i]) else{ if(this.str.length>str.str.length){ } } } } return 0; return 1; else{ return 1; public int compareToIgnoreCase(MyString str) //比较两个串大小,忽略大小写 { } int c; char[] c1=new char[this.str.length]; char[] c2=new char[str.str.length]; c1=this.toUpperCase().str; c2=str.toUpperCase().str; if(this.str.length==str.str.length) } else{ } return 1; c=this.str.length; for(int i=0;i if(c1[i]==c2[i]) } continue; return 0; return 1; if(c1[i]>c2[i]) else{ c=str.str.length; c=str.str.length; for(int i=0;i return 0; if(c1[i]==c2[i]) } continue; return 0; return 1; if(c1[i]>c2[i]) else{ if(this.str.length>str.str.length){ } public boolean startsWith(MyString prefix) //判断prefix是否前缀子串 { } public boolean endsWith(MyString suffix) //判断suffix是否前缀子串 { } char[] c=new char[suffix.str.length]; for(int i=this.str.length,j=c.length;j>=0;i--,j--){ } return true; if(c[j]==this.str[i]) continue; return false; else char[] c=new char[prefix.str.length]; for(int i=0;i return true; if(c[i]==this.str[i]) continue; return false; else 2. 统计在一个串中各字符的出现次数。 源代码:package Word1; public class MyString { char[] str; public MyString trim() //删除串中所有空格 { char[] n=new char[str.length]; int cou=0; for(int i=0;i if(str[i]!=' '){ } n[cou]=str[i]; cou++; } public char[] toCharArray() { } public MyString toLowerCase() //返回将大写字母转换成小写字母的字符串 { } public MyString toUpperCase() //返回将小写字母转换成大写字母的字符串 { } public MyString replace(char old, char newc) //用字符newc替换串中的字符{ } public boolean equals(Object obj) //判断两个串是否相等 { if(obj instanceof String){ String s=obj.toString(); char[] c=new char[s.length()]; for(int i=0;i c[i]=s.charAt(i); return false; if(c.length!=str.length) else{ for(int i=0;i return this; if(str[i]==old) str[i]=newc; for(int i=0;i return this; if(str[i]>=97 && str[i]<=122 ){ } str[i]=(char) (str[i]-32); for(int i=0;i return this; if(str[i]>=65 && str[i]<=90 ){ } str[i]=(char) (str[i]+32); return str; //返回字符数组 old } } } for(int i=0;i if(c[i]!=str[i]) return false; return true; public boolean equalsIgnoreCase(String str1)//判断两个串是否相等,忽略大小写 { } public int compareTo(MyString str) //比较两个串大小,实现Comparable接口 { int c; if(this.str.length==str.str.length) c=str.str.length; c=str.str.length; for(int i=0;i if(this.str[i]==str.str[i]) continue; return 0; return 1; if(this.str[i]>str.str[i]) else{ if(this.str.length>str.str.length){ char[] c=new char[str1.length()]; for(int i=0;i return true; c[i]=str1.charAt(i); return false; for(int i=0;i if(str[i]>=65 && str[i]<=90 ){ } else{ } if(c[i]!=str[i] && c[i]!=str[i]-32) return false; if(c[i]!=str[i] && c[i]!=str[i]+32) return false; if(c.length!=str.length) else{ } } return 0; } else{ c=this.str.length; for(int i=0;i return 1; } } } return 1; } public int compareToIgnoreCase(MyString str) { int c; char[] c1=new char[this.str.length]; char[] c2=new char[str.str.length]; c1=this.toUpperCase().str; c2=str.toUpperCase().str; if(this.str.length==str.str.length) c=str.str.length; if(this.str.length>str.str.length){ c=str.str.length; for(int i=0;i return 1; } } return 0; } else{ c=this.str.length; for(int i=0;i if(c1[i]==c2[i]) //比较两个串大小,忽略大小写 } } } } } continue; return 0; return 1; if(c1[i]>c2[i]) else{ return 1; public boolean startsWith(MyString prefix) //判断prefix是否前缀子串 { } public boolean endsWith(MyString suffix) //判断suffix是否前缀子串 { } char[] c=new char[suffix.str.length]; for(int i=this.str.length,j=c.length;j>=0;i--,j--){ } return true; if(c[j]==this.str[i]) continue; return false; else char[] c=new char[prefix.str.length]; for(int i=0;i return true; if(c[i]==this.str[i]) continue; return false; else 测试实例: str1=“Good morning!” str2=“Shanghai 2010” 粘贴测试结果: 3. 找出两个字符串中所有共同的字符。 源代码:package Word1; public class Find { } static String str1=\; static String str2=\; public static void main(String args[]){ } public static char[] fin(String s1,String s2){ } char c=0; char[] c1=new char[26]; int z=0; for(int i=0;i return c1; c=s1.charAt(i); if(s1.indexOf(c,i+1)==-1){ } else continue; for(int j=0;j if(c==s2.charAt(j)){ } c1[z]=c; z++; break; char[] c=new char[26]; c=fin(str1,str2); for(int i=0;c[i]!=0;i++){ } System.out.printf(\,c[i]); 粘贴测试结果: 4. 判断一个字符串是否为一个E-mail地址。 源代码:package Word1; public class Email { static String str=\; public static void main(String[] args){ } public static boolean First(){ } public static boolean ReAndEnd(){ for(int i=0;i if(str.charAt(i)=='@'){ if(str.indexOf('@',i+1)!=-1) return false; return false; if(i==str.length()-1) if(str.charAt(i+1)=='.' || str.charAt(i-1)=='.') if(str.charAt(0)=='@') return false; return true; if(First()) } if(ReAndEnd()) } System.out.println(\该字符串不是合法邮箱地址\); if(Name()) } System.out.println(\该字符串不是合法邮箱地址\); System.out.println(\该字符串为合法邮箱地址\); System.out.println(\该字符串不是合法邮箱地址\); else{ else{ else{ } } } } return false; if(str.charAt(str.length()-1)=='.') return false; return true; public static boolean Name(){ } for(int i=0;i return true; if(str.charAt(i)>=0 && str.charAt(i)<=47) return false; return false; return false; return false; if(str.charAt(i)>=58 && str.charAt(i)<=64) if(str.charAt(i)>=91 && str.charAt(i)<=96) if(str.charAt(i)>=123) 粘贴测试结果: 三、 心得体会:(含上机中所遇问题的解决办法,所使用到的编程技巧、创新点及编程 的心得)
正在阅读:
数据结构实验四 串操作03-15
QlikView与QlikView Server安装部署10-11
公安民警肃清流毒影响个人心得感悟范文四篇04-03
A2语法及配合小练习介绍02-01
关于学习郑培民2021年心得体会08-08
国内外环境法的比较分析11-15
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数据结构
- 实验
- 操作