博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
详细解释
阅读量:4451 次
发布时间:2019-06-07

本文共 1937 字,大约阅读时间需要 6 分钟。

针对邹欣老师在我博客园随笔中提出的问题(博客园链接https://www.cnblogs.com/cuijunfeng/p/10988873.html),上次在评论里的解释有些词不达意,因此我专门写了一篇博客,首先是我对题意理解有误

我博客园里的代码只是考虑到输入文件是问题中所给出的(Apple,Zoo,Elephant,Under,Fox,Dog,Moon,Leaf,Tree)这是一种十分理想化的文件,也就是说我的代码是从文件的第一个单词开始去寻找
与他首尾相连的单词,而题目中让使用的文件也正好符合apple elephant tree ,这让我认为这段代码是正确的,其实只是运气好,如果最长的字符串的首元素不是文件的首字母,就会出现错误,下面是我对博客园里代码的注释
核心代码说明:
BufferedReader br = new BufferedReader(new FileReader(s))
//创建字符缓冲输入流对象br

StringBuffer sb = new StringBuffer()

//实例化StringBuffer类sb

String text = null

//设置一个空字符串text

while ((text = br.readLine()) != null) {

sb.append(text);
}
//读取流数据,返回字符串。append()是往动态字符串数组后添加,就是x +y + z

br.close();

String str = sb.toString().toLowerCase()
//将读到的数据转换为字符串,并且转换小写

String[] words = str.split("[^(a-zA-Z)]+")

//将上一步处理过的数据写入一个下标从零开始的words数组

StringBuffer yao = new StringBuffer()

//实例一个yao

String b1=words[0]

//将words数组的第一个赋值给字符串b1

yao.append(b1)

//输出b1

yao.append(" ")

String end=b1.substring(b1.length()-1,b1.length())

//substring()方法可以将里面的两个长度中间间隔的字符传入字符串end
//打个比方说一个apple的长度substring(5-1,5),该方法会将apple中第四到第五位的字符输出,也就是末尾项e

for(int i=1;i<words.length;i++)

//一个循环,将循环体从words[1]开始

String start=words[i].substring(0,1)

//将第二个数据,也就是words[1],使用一次substring()方法,此时将单词的首字母传入了start

if(end.equals(start))
{
end=words[i].substring(words[i].length()-1,words[i].length());
//用equals()方法判断是否字母首尾一致,若一致就将end再置为一个连接后的末尾字母,再用循环去找下一个首字母一样的单词
yao.append(words[i]);
//输出找到的可以连接的单词
yao.append(" ");
}

也就是说,这段代码确实能找到一条最长的字符串,只不过只是在题目的特例下,但是核心的代码思想是没有问题的。
解决方法________如果想确定找到的字符串是最长的,并且没有比他更长的字符串
我们可以在String b1=words[0]//将words数组的第一个赋值给字符串b1 这段代码的位置加入的一个for循环,将文件中读取到每一个单词都进行一次赋值循环,这样就可以得到全部的有可能
是最长的字符串,然后再将这些得到的待考量的字符串传入一个新的字符串数组去,最后用一个for循环对数据的.length进行比较,将最长的输出到文件中,这样一来输出的字符串必定是最大的。
上次回复评论时确实没有考虑到这点问题,当时在eclipse中运行后得到的文件中的字符串和题目给出的标准完全一致,所以就忽视了代码中的问题,以至于回复的驴唇不对马嘴,这次您的评论确实
让我深感惭愧,我以后在代码方面一定认真细心,不能囫囵吞枣,必须把借鉴来的东西吃透了,为自己所用,还有就是审题一定要全面,得到正确答案但并不一定是正确的运行过程,要多方面考虑真实
存在的可能性。

 

 

 

转载于:https://www.cnblogs.com/cuijunfeng/p/11020565.html

你可能感兴趣的文章
C++ 存储类
查看>>
整数游戏 (Integer Game,UVa 11489)
查看>>
项目Beta冲刺(团队) --3/7
查看>>
手机购买怎样识别假货——一点心得体会分享!
查看>>
scrapy-redis 分布式爬虫
查看>>
【JSP运行机制】
查看>>
python_day7 反射
查看>>
360
查看>>
【程序练习】——十进制的转换
查看>>
深入理解SP、LR和PC
查看>>
汽车OBD接口定义
查看>>
Android Ultra-Pull-To-Refresh 自定义下拉刷新视差动画
查看>>
如何在Android Studio上使用Github
查看>>
python:字符串转换成字节的三种方式
查看>>
初学Python——文件操作
查看>>
通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)
查看>>
linux常用命令
查看>>
Codeforces 975C
查看>>
STM32F4_TIM输出PWM波形(可调频率、占空比)
查看>>
DEV控件:gridControl常用属性设置
查看>>