昨天在csdn英雄会上做了道题,第五届在线编程大赛月赛指定题目:反向互。。。编译通过,提交后提示挑战失败,不知是程序哪块的问题。请大侠们帮忙指点一下噢。。

问题描述

importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;publicclassReverseComplement{publicstaticvoidmain(String[]args)throwsIOException{System.out.println("请输入组数:");Scannerscan=newScanner(System.in);inti=Integer.parseInt(scan.nextLine());List<String>list=newArrayList<String>();for(intt_=0;t_<i;t_++){System.out.println("请输入第"+(t_+1)+"组:");StringBuffersb=newStringBuffer();chart=(char)(System.in.read());while(t!='n'&&t!='r'){sb.append((char)t);t=(char)(System.in.read());}//window系统t=(char)(System.in.read());list.add(sb.toString());}System.out.println("输出样例:");for(i=0;i<list.size();i++){reverseComple(list.get(i));}}/***反转串方法**@paraminputStr*/privatestaticvoidreverseComple(StringinputStr){charb[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};StringreverseStr="";//反转串for(inti=0;i<inputStr.length();i++){for(intj=0;j<b.length;j++){//查询出对应的反转字符if(inputStr.charAt(i)==b[j]){reverseStr+=b[(j+13)%26];break;}}}//System.out.println("原串============"+inputStr);//System.out.println("反转串============"+reverseStr);//查询互补子串intretLength=0;for(inti=0;i<reverseStr.length();i++){//反转串intrePos=i;//反转串遍历开发位置inttempLength=0;//此次查找反转串长度intmodCnt=2;//反转串允许剔除字符数量intePos=reverseStr.length();for(intj=ePos-1;j>=rePos;j--){//原串if(reverseStr.charAt(rePos)==inputStr.charAt(j)){//反转串向后走,原串向前走tempLength++;rePos++;//System.out.println("反转串向后走,原串向前走="+a.charAt(j));}elseif(tempLength>0&&modCnt>0){//原串向前走modCnt--;//System.out.println("//原串向前走="+a.charAt(j));}elseif(modCnt<=0){//原串向前查找,寻找下一个匹配位置重新计数if(retLength<tempLength){retLength=tempLength;}rePos=i;tempLength=0;modCnt=2;j=--ePos;//System.out.println("原串向前查找,寻找下一个匹配位置重新计数="+a.charAt(j)+"=====rePos"+rePos+"=====ePos="+ePos);}if(retLength<tempLength){retLength=tempLength;}}}System.out.println(retLength);}}

解决方案

解决方案二:
packageJUnit;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;publicclassReverseComplement{publicstaticvoidmain(String[]args)throwsIOException{System.out.println("请输入组数:");Scannerscan=newScanner(System.in);inti=Integer.parseInt(scan.nextLine());List<String>list=newArrayList<String>();for(intt_=0;t_<i;t_++){System.out.println("请输入第"+(t_+1)+"组:");StringBuffersb=newStringBuffer();chart=(char)(System.in.read());while(t!='n'&&t!='r'){sb.append((char)t);t=(char)(System.in.read());}//window系统t=(char)(System.in.read());list.add(sb.toString());}System.out.println("输出样例:");for(i=0;i<list.size();i++){reverseComple(list.get(i));}}/***反转串方法**@paraminputStr*/privatestaticvoidreverseComple(StringinputStr){charb[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};StringreverseStr="";//反转串for(inti=0;i<inputStr.length();i++){for(intj=0;j<b.length;j++){//查询出对应的反转字符if(inputStr.toUpperCase().charAt(i)==b[j]){reverseStr+=b[(j+13)%26];break;}}}//System.out.println("原串============"+inputStr);//System.out.println("反转串============"+reverseStr);//查询互补子串intretLength=0;for(inti=0;i<reverseStr.length();i++){//反转串intrePos=i;//反转串遍历开发位置inttempLength=0;//此次查找反转串长度intmodCnt=2;//反转串允许剔除字符数量intePos=reverseStr.length();for(intj=ePos-1;j>=rePos;j--){//原串if(reverseStr.charAt(rePos)==inputStr.charAt(j)){//反转串向后走,原串向前走tempLength++;rePos++;//System.out.println("反转串向后走,原串向前走="+a.charAt(j));}elseif(tempLength>0&&modCnt>0){//原串向前走modCnt--;//System.out.println("//原串向前走="+a.charAt(j));}elseif(modCnt<=0){//原串向前查找,寻找下一个匹配位置重新计数if(retLength<tempLength){retLength=tempLength;}rePos=i;tempLength=0;modCnt=2;j=--ePos;//System.out.println("原串向前查找,寻找下一个匹配位置重新计数="+a.charAt(j)+"=====rePos"+rePos+"=====ePos="+ePos);}if(retLength<tempLength){retLength=tempLength;}}}System.out.println(reverseStr);}}

两个主要问题:1是反转字符你只定义了大写的,这样的话需要对原输入进行大小写转换,2是你最后output打印的string变量名搞错了细心点,提交前多调试即可

时间: 2024-12-31 04:43:50

昨天在csdn英雄会上做了道题,第五届在线编程大赛月赛指定题目:反向互。。。编译通过,提交后提示挑战失败,不知是程序哪块的问题。请大侠们帮忙指点一下噢。。的相关文章

mina 在发送长报文时,为什么被截成好几段呢。请大侠帮帮忙。

问题描述 mina在发送长报文时,为什么被截成好几段呢.请大侠帮帮忙. 解决方案 解决方案二:这个是必然的.物理限制,和mina无关.你使用的默认解码器或者自己写的解码器的一个功能,就是将可能的N个物理包,变成一个逻辑包.每个逻辑包,包头应当由标志位(这个逻辑包是什么数据)以及长度位(这个逻辑包长度是多少,个别固定长度的逻辑包,可以省略).每次,解码的时候,读取bytebuffer的头,看看当前解析的是什么包,然后长度是多少,再比较一下,当前的bytebuffer长度够不够,如果不够的话,则将b

我用XMLHTTP后台取网站数据一段时间后被T回首页,不知道是什么原因,请朋友位帮忙分析一下可能的原因!

问题描述 我用XMLHTTP后台取网站数据一段时间后被T回首页,不知道是什么原因,请朋友位帮忙分析一下可能的原因!我用XMLHTT做后台取网站数据进入分析,手动登陆后每秒取一次数据,但是运行一段时间就被网站T回到了首页要求从新登陆,被T的时间也很不确定,有时间几分钟,有时间半个多一个小时.不知道有没有办法解决被T的问题,敬请各位朋友帮忙分析解决的方案!在此谢谢各位! 解决方案 解决方案二:有可能Session时间到了,取回来的数据有跳转到首页的代码不要去执行里面的代码解决方案三:恩,LS说的对解

关于跨域名实现单点登录的问题。请大侠来帮忙看看

问题描述 有这样一个需求,www.sitea.com.cn和www.siteb.com.cn两个不同域名的网站,2个网站使用一个数据库中的用户表,要求在www.sitea.com.cn中登录后在www.siteb.com.cn中也是登录状态..在网上找了一天,找到如下解决方案..帖子地址如下:http://www.cnblogs.com/AndersLiu/archive/2007/06/20/790894.html我是想问..5.不同域之众的两个应用之间的SSO下的第二段代码该放在哪里?我放在

请大神帮忙指点

问题描述 本人想学C#,以前学过C++,无项目开发经验,请各位大神指点该如何入手学比较好,谢谢! 解决方案 解决方案二:不是大神,但建议你可以买本c#入门经典,自己先看看基本语法,然后自己写一些代码多熟悉熟悉就好了解决方案三:C#语法比C++要简单如果你C++学的好的话,学C#应该会很容易问题是不知道你到底会什么还是找本书先啃着吧解决方案四:谢过啦,看了些视频觉得效果不错,先看着吧解决方案五:入坑啊,看看有没地方找培训机构的书或资料,入门会好些

在线等请大侠帮帮忙

问题描述 classProgram{staticvoidMain(string[]args){Console.Write(Convert.ToString(1/2));Console.ReadKey();}}这个东西显示的结果是0要打印出来的是0.5代码要怎么写大侠帮忙在线等 解决方案 解决方案二:Console.Write(Convert.ToString((double)1/2); 解决方案三:try...classProgram{staticvoidMain(string[]args){C

程序中的小问题 请大家帮帮忙啊

问题描述 "/"应用程序中的服务器错误.--------------------------------------------------------------------------------无法将类型为"Dal.Info"的对象强制转换为类型"IDal.IInfo".说明:执行当前Web请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息:System.InvalidCastE

哪位大神帮忙指点一下这个错误,谢谢!

问题描述 哪位大神帮忙指点一下这个错误,谢谢! 将工程导入到MyEclipse中we.xml文件出现了如下错误 Referenced file contains errors (file:/E:/MyEclipse/MyEclipse 10/configuration/org.eclipse.osgi/bundles/979/1/.cp/ dtds/loose.dtd). For more information, right click on the message in the Proble

operate-范磊c++,在十八章写String类 “重载输入运算符” 遇到问题,请各位大侠帮忙指点!

问题描述 范磊c++,在十八章写String类 "重载输入运算符" 遇到问题,请各位大侠帮忙指点! #include using namespace std; class String { public: String(); String(char*); String(String&); virtual ~String(){cout<<"析构函数执行n";delete []str;len=0;} const int getlen()const{r

请大侠看看用UdpClient做服务器实现高并发的思路

问题描述 小弟最近项目需要,要做个类似于P2P架构的服务器来登记客户端IP和端口实现打洞.因为客户端数据量大概有三千个,所以要求服务器能撑住三千个并发(因为有心跳机制).因为从没做过socket开发,加上网上的UDP资料也讲得不够深入,所以小弟将实现思路写出来请各路大侠帮忙看看是否合理.先讲个小插曲,小弟曾以为异步就是并发,所以用udpclient一下子BeginReceive了三次,以为这样就能一下子处理三个客户端发来的数据.测试时故意让第一次回调先sleep10秒再EndReceive.测试