1213字符串日期问题.docx
- 文档编号:9968472
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:39
- 大小:25.82KB
1213字符串日期问题.docx
《1213字符串日期问题.docx》由会员分享,可在线阅读,更多相关《1213字符串日期问题.docx(39页珍藏版)》请在冰点文库上搜索。
1213字符串日期问题
1-2字符串
1-3日期问题
1-2字符串问题
1、设定一个有大小写字母的字符串,先将字符串中的大写字符输出,再将字符串中的小写字符输出。
classStringTest
{
publicstaticvoidmain(String[]args)
{
Strings="ABCdefGc";
for(inti=0;i { charc=s.charAt(i); if(c>='A'&&c<='Z') System.out.print(c); } System.out.println(); for(inti=0;i { charc=s.charAt(i); if(c>='a'&&c<='z') System.out.print(c); } System.out.println(); } } 2、设定5个字符串并只打印输出以字母"f"开头的串。 classStringTest { publicstaticvoidmain(String[]args) { String[]s={"sw","fed","fecg","e","cgs"}; for(inti=0;i { if(s[i].charAt(0)=='f') { System.out.println(s[i]); } } } } 3、设定5个字符串并只打印那些以字母"nt"结尾的串。 classStringTest { publicstaticvoidmain(String[]args) { String[]s={"nat","ant","ctb","gnt","asc"}; for(inti=0;i { if(s[i].endsWith("nt")) { System.out.println(s[i]); } } } } 4、设定一个有大小写字母的字符串和一个查找字符,使用类String方法indexOf来判断在该字符串中该字符的出现次数。 indexOf来判断在该字符串中该字符的出现次数 classStringTest { publicstaticvoidmain(String[]args) { Strings="abcdEdcgdsGA"; intn=0; intk=-1; for(inti=0;i { k=s.indexOf('d',k+1); if(k==-1) { break; } n++; } System.out.println("字符d的个数为: "+n); } } 5、有3个字符串,要求找出其中最大者。 classStringTest { publicstaticvoidmain(String[]args) { Stringa="abcd"; Stringb="cbed"; Stringc="cbedces"; if(pareTo(b)>0) { if(pareTo(c)>0) { System.out.println(a); } else {System.out.println(c); } } else { if(pareTo(c)>0) {System.out.println(b); } else { System.out.println(c); } } } } 6、编写一个程序,对一字符串做大小写变换、其他变换并输出,最后输出原串观察效果。 classStringTest { publicstaticvoidmain(String[]args) { Stringa="abEfCd"; System.out.println(a.toUpperCase()); System.out.println(a.toLowerCase()); System.out.println(a.trim()); System.out.println(a.replace('a','A')); System.out.println(a.replaceFirst("Ef","KG")); System.out.println(a); } } 7、编写一个程序,向一个字符串插入和追加部分内容。 classStringTest { publicstaticStringinsert(Stringa,Stringx,intn) { Stringb=a.substring(0,n); Stringc=b.concat(x); Stringd=c.concat(a.substring(n,a.length()-1)); returnd; } publicstaticvoidmain(String[]args) { Stringa="he"; Stringb=a.concat("world! "); Stringc=insert(b,"llo",2); System.out.println(c); } } 8、输出希腊字母表,了解unicode字符表。 publicclassGreekAlphabet { publicstaticvoidmain(Stringargs[]) { intstartPosition=0,endPosition=0; charcStart='α',cEnd='ω'; startPosition=(int)cStart;//【代码1】cStart做int型转换据运算,并将结果赋值给startPosition endPosition=(int)cEnd;//【代码2】cEnd做int型转换运算,并将结果赋值给endPosition System.out.println("希腊字母\'α\'在unicode表中的顺序位置: "+(int)c); System.out.println("希腊字母表: "); for(inti=startPosition;i<=endPosition;i++) { charc='\0'; c=(char)i;//【代码3】i做char型转换运算,并将结果赋值给c System.out.print(""+c); if((i-startPosition+1)%10==0) System.out.println(""); } } } 9、字符串中搜索指定的字符串。 如果是找AAA,在源串中有AAAAAA,那么要算找到二个AAA。 要求显示每找到的串的开始位置。 importjava.util.Scanner; publicclassaaa1{ //求出子字符串中可能出现与子字符串匹配的子字符串,例如abcababc,当取第二个a是不可能出现与子字符串相等的情况,但当去第三个a是则可能出现,因为abc和子字符串的前三个字母相同。 publicstaticvoidmain(String[]args){ intsum=0,add1=0,begin=0,end=0; Scannersc=newScanner(System.in); System.out.println("请输入要查找的子字符串: "); Stringstr1=sc.next(); System.out.println("请输入主字符串: "); Stringstr=sc.next(); Stringstr2=str; end=str.length(); sum=end; for(inti=0;i add1=str.indexOf(str1)+begin;//查到位置为原来开始位置加本次相对位置 if(str.indexOf(str1)<0)System.exit(0);//如果未查到就退出 if(add1<=end){ System.out.println(""+add1);//显示查到位置 begin=add1+str1.length();//下一次开始位置 str=str2.substring(begin,end);//下一次欲查的串 i=begin-1; } } } } 这一解法每次要截去已查过的串,求新的待查串比较麻烦。 下面用取子串的方法查找,程序容易设计,效率也高。 importjava.util.Scanner; publicclassaaa1{ //求出子字符串中可能出现与子字符串匹配的子字符串,例如abcababc,当取第二个a是不可能出现与子字符串相等的情况,但当去第三个a是则可能出现,因为abc和子字符串的前三个字母相同。 publicstaticvoidmain(String[]args){ intsum=0,n0=0; Scannersc=newScanner(System.in); System.out.println("请输入要查找的子字符串: "); Stringstr1=sc.next(); System.out.println("请输入主字符串: "); Stringstr=sc.next(); sum=str.length(); n0=str1.length(); for(inti=0;i<=sum-n0;i++){ if(str.substring(i,i+n0).compareTo(str1)==0){ System.out.println(""+i); i=i+n0-1; } } } } 采用相同的字符串进行时间比较的情况: //第1种方法: importjava.util.Scanner; publicclassaaa1{ //求出子字符串中可能出现与子字符串匹配的子字符串,例如abcababc,当取第二个a是不可能出现与子字符串相等的情况,但当去第三个a是则可能出现,因为abc和子字符串的前三个字母相同。 publicstaticvoidmain(String[]args){ longstartTime=System.nanoTime();//获取开始时间 intsum=0,add1=0,begin=0,end=0; Stringstr1="aaa"; Stringstr="aaadfaaaaaadfgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; Stringstr2=str; end=str.length(); sum=end; for(inti=0;i add1=str.indexOf(str1)+begin;//查到位置为原来开始位置加本次相对位置 if(str.indexOf(str1)<0)System.exit(0);//如果未查到就退出 if(add1<=end){ System.out.print(""+add1);//显示查到位置 begin=add1+str1.length();//下一次开始位置 str=str2.substring(begin,end);//下一次欲查的串 i=begin-1; } } System.out.println(""); longendTime=System.nanoTime();//获取结束时间 System.out.println("程序运行时间: "+(endTime-startTime)+"ns(纳秒)"); //第2种方法: startTime=System.nanoTime();//获取开始时间 intn0=0; sum=0; str1="aaa"; str="aaadfaaaaaadfgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; sum=str.length(); n0=str1.length(); for(inti=0;i<=sum-n0;i++){ if(str.substring(i,i+n0).compareTo(str1)==0){ System.out.print(""+i); i=i+n0-1; } } System.out.println(""); endTime=System.nanoTime();//获取结束时间 System.out.println("程序运行时间: "+(endTime-startTime)+"ns(纳秒)"); } } 运行情况: 1)采用str.indexOf(str1) 058141720232629323538414447 程序运行时间: 1698819ns(纳秒) 2)采用子串比较str.substring(i,i+n0).compareTo(str1) 058141720232629323538414447 程序运行时间: 568229ns(纳秒) 从以上比较可以看出,采用子串比较的算法效率要高出2倍以上。 C++代码1: //对KMP算法做相应的修改 //如果题目表述为主串AAAAA包含4个模式串AA,则递归时修改主串为从上一个匹配地址加一开始的字符串 //如果题目表述为主串AAAAA包含2个模式串AA,则递归时修改主串为从上一个匹配地址加上模式串长度的位置开始的字符串 //本程序属于第二种情况 #include #defineMaxSize10 voidGetNextval(char*,int*,int); voidKMPIndex(char*,char*,int); intN=0; voidmain() { chars[]="aaaaa"; chart[]="aa"; KMPIndex(s,t,0); printf("主串中共有%d个串与模式串匹配.\n",N); } voidGetNextval(chart[],intnextval[],intlen) { intj=0,k=-1; nextval[0]=-1; while(j { if(k==-1||t[j]==t[k]) { j++; k++; if(t[j]! =t[k])nextval[j]=k; elsenextval[j]=nextval[k]; } elsek=nextval[k]; } } voidKMPIndex(chars[],chart[],intn)//n表示上一个匹配的串的下标 { intnextval[MaxSize],i=0,j=0,slen,tlen; while(t[i]! ='\0') i++; tlen=i; while(s[j]! ='\0') j++; slen=j; i=0; j=0; GetNextval(t,nextval,tlen); while(i { if(j==-1||s[i]==t[j]) { i++; j++; } elsej=nextval[j]; } if(j>=tlen) { N++; printf("第%d个匹配的串从主串s[%d]开始.\n",N,n+i-tlen); KMPIndex(&s[i],t,n+i); } } C++解2,正确,实现比较简单。 #include #include intfind(char*string,char*find_str) { char*char_a=string; char*char_b=find_str; inti=0,j=0; printf("String: \n%s\n",string); while(*(char_a)! ='\0') { while(*char_a==*char_b) { i++; if(*++char_b=='\0')break; if(*++char_a=='\0')break; } if(i==strlen(find_str))j++; i=0; if(*char_a++=='\0')break; char_b=find_str; } returnj; } voidmain() { char*str="XXXXlinXXXsuXXboX"; char*fs="XX"; printf("\n\nfindout%d\"%s\"\n",find(str,fs),fs); } 10、字符串排序问题 已知String[]book={"a","13","4","5","1","56","r","y","d"}; 求排序后查找键盘输入的书目名及其位置 importjava.util.*; publicclassaaa2{ String[]book={"a","13","4","5","1","56","r","y","d"}; publicvoiddisplay()//显示方法 { for(inti=0;i System.out.println(book[i]);//观察排序结果 } publicintsearch(Strings)// { Arrays.sort(book);//排序 returnArrays.binarySearch(book,s);//查找,如果使用本方法查找必须先排序 } publicstaticvoidmain(String[]args) { aaa2s1=newaaa2(); //Strings=JOptionPane.showInputDialog("输入要查找的书目名: ");//如果通过对话框接受用户输入 //如果改为不使用对话框,可以用下面三句代替 System.out.println("请输入要查找的书目名: \n"); Scanners2=newScanner(System.in);//接受键盘输入 Strings=s2.nextLine();//接受字符串 intn=s1.search(s); if(n>=0)System.out.println(s+"摆放在第"+(n+1)+"个位置。 "); elseSystem.out.println(s+"不存在! "); System.exit(0); } } 上一程序的简单形式为: importjava.util.*; publicclassaaa2{ publicstaticvoidmain(String[]args) { String[]book={"a","13","4","5","1","56","r","y","d"}; System.out.println("请输入要查找的书目名: "); Scanners2=newScanner(System.in);//接受键盘输入 Strings=s2.nextLine();//变成字符串 Arrays.sort(book);//排序 for(inti=0;i System.out.println(book[i]);//观察排序结果 intn=Arrays.binarySearch(book,s);//查找,如果使用本方法查找必须先排序 if(n>=0)System.out.println(s+"摆放在第"+(n+1)+"个位置。 "); elseSystem.out.println(s+"不存在! "); System.exit(0); } } 11、根据输入的要查找的全名或部分名进行查找 importjava.util.*; publicclassaaa2{ publicstaticvoidmain(String[]args) { String[]book={"abc","13232","4f3fd","532234","134","gdfg","etfd","abcwer"}; System.out.println("请输入要查找的全名或部分名: "); Scanners2=newScanner(System.in);//接受键盘输入 Strings=s2.nextLine();//变成字符串 intn=0; for(inti=0;i if(book[i].indexOf(s)>=0)//模糊查找 {System.out.println(book[i]); n++;} if(n>0)System.out.println("找到上述"+n+"个信息。 "); elseSystem.out.println(s+"不存在! "); System.exit(0); } } 思考: 如果不使用indexOf,能否实现模糊查找? 回答: 可以。 采用与所待查字串等长的子串匹配的方法也能进行查找,而且效率还高。 12、建立StringBuffer类(字符串缓冲区),编程改变其长度,加入新字符串,再求出字符串缓冲区的长度与容量。 解1 publiccl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1213 字符串 日期 问题
![提示](https://static.bingdoc.com/images/bang_tan.gif)