帮忙解答一道面试题

05-09-27 wqening
给定某一长度的字符串,请找出其中由相同字符连接而成的最长字符串,

并已"字母,长度"的形式返回。

比如"axxxbbbbxxxxxdd"其中由相同字符连接而成的最长字符串为xxxxx,则返回"x,5".

如果出现由不同字符构成的长度相同的字符串,则返回先出现的。

比如"aaabbbcc",返回"a,3".

包名:无

类名:SequenceFinder

方法签名:public String find(String message)

其中给定的message仅由字符'a'-'z'构成,message长度为1-40

kevinzhou
2005-10-04 13:11
private static String find(String msg) {

String ret = "";

int temp = 0;

while(msg.length()>0){

String curChar = msg.substring(0,1);

int retT = checkIndex(curChar,msg);

if(retT>temp){

ret = curChar+","+String.valueOf(retT);

temp = retT;

}else if(retT==temp){

ret += ";"+curChar+","+String.valueOf(retT);

}

msg = msg.substring(retT);

}

return ret;

}

private static int checkIndex(String str,String wholeStr) {

int t = 0;

String temp = str;

while(wholeStr.indexOf(temp)>-1){

t++;

temp += str;

}

return t;

}

kevinzhou
2005-10-04 13:16
sorry,题目是返回先出现的,请修改删除等于逻辑判断即可

猜你喜欢