2015计算机二级考试指导:文本中找最长的回文字符串
发布时间:2010/3/10 16:19:56 来源:城市学习网 编辑:MOON
1*难度:初级
2*问题:从输入文件calfflac.in中读取文本,找到最长的回文串(翻转之后和它自己相等的字符串),只考虑字母,不区分大小写
3*输出最长回文串的长度,并且输出它在原文中的对应的串。如果多个回文串长度相等,输出第一个。
4*注:该题目来自:http://ace.delos.com/usacogate,有兴趣的朋友可以去上面注册,很好的练习平台。
5*/
6importjava.util.*;
7importjava.io.*;
8classcalfflac
9{
10publicstaticvoidmain(Stringargs)throwsIOException{
11//UseBufferedReaderratherthanRandomAccessFile;it‘smuchfaster
12BufferedReaderf=newBufferedReader(newFileReader("calfflac.in"));
13//inputfilenamegoesabove
14PrintWriterout=newPrintWriter(newBufferedWriter(newFileWriter("calfflac.out")));
15Stringtemp=null;
16StringBuilderorigin=newStringBuilder(20000);//包含原来的字符串
17StringBuilderletters=newStringBuilder(20000);//包含字母
18intindexes=newint[20000];
19while((temp=f.readLine())!=null)
20{
21origin.append(temp);
22origin.append(‘“n‘);
23}
24intlen=origin.length();
25for(inti=0;ilen;i++)
26{
27charc=(origin.charAt(i));
28if(c=‘a‘&&c=‘z‘c=‘A‘&&c=‘Z‘)//只要字母
29{
30letters.append(origin.charAt(i));
31indexes[letters.length()-1]=i;
32}
33}
34intmaxLength=1;//回文串的长度
35intmaxIndex=0;//回文串的中间字母的索引
36len=letters.length();