题目是这样的,哪位帮忙指点下吧,谢谢下面三题类似,解答时请考虑代码的重用性。
1. 10进制数字按列输入,如果有相邻数位增加,则称这个增加相邻列为增加部分列,求输入序列中最长的增加部分列。
2. 2进制数字按列输入,列中相同的连续列称为同值部分,求输入2进制列中最长的同值部分。
3. 英文字母按列输入,列中相同文字(区分大小写)连续部分称为同字部分,求输入文字列中最长的同字部分
1. 10进制数字按列输入,如果有相邻数位增加,则称这个增加相邻列为增加部分列,求输入序列中最长的增加部分列。
2. 2进制数字按列输入,列中相同的连续列称为同值部分,求输入2进制列中最长的同值部分。
3. 英文字母按列输入,列中相同文字(区分大小写)连续部分称为同字部分,求输入文字列中最长的同字部分
初始為0
然後循環 遇循序增加(或相同值),則currentLen++;
增加(或相同)中斷,判斷 maxLen和currentLen哪個大,maxLen記錄大的。
結束後再判斷一次 maxLen和currentLen哪個大,大的就是答案。
import java.awt.List;
import java.util.ArrayList;public class MaxRepeatStr { /**
* @param args
*/
public static void main(String[] args) {
String src="1233345676868344888848444444944499999";
ArrayList<String>repeats= findMaxRepeated(src);
String maxinfo=maxLength(repeats);
System.out.println(maxinfo); }
static ArrayList<String> findMaxRepeated(String source){
char repeatedchar = 0;
String repeatedstr = "";
ArrayList<String> result=new ArrayList<String>();
for(char item : source.toCharArray()){
if(item==repeatedchar){
repeatedstr+=item;
}
else
{
repeatedchar=item;
if(repeatedstr!=""){
result.add(repeatedstr);
repeatedstr="";
}
}
}
return result;
}
static String maxLength(ArrayList<String>list){
int maxlen=0;
String maxstr="";
for(String s:list){
if(s.length()>maxlen){
maxlen=s.length();
maxstr=s;
}
}
return "最长串是:"+maxstr+",长度="+maxlen;
}}
一堆完全解耦,适配器设计模式的什么还没完全理解。