您的位置:首页 > 其它

计算一个字符串中最大的子串的长度,并将它返回。如“abc12345sdfsasdfsd”最大的子串是sdfsasdfsd

2012-11-13 20:14 253 查看
定义一个变量记录当前子串是字母还是数字的状态,再定义一个变量存放当前子串,再定义一个变量存放最长子串.接下来按字符循环字符串,判断当前字符是否符合当前子串状态,符合的话,当前子串拼接这个字符,不符合当前子串状态的话,如果当前子串比最长子串长,就替换最长子串.再把当前子串替换为当前字符转化的字符串.
用JAVA来写就是这样.
public static void main(String[] args) {
String str = "abc12345sdfsasdfsd";
String subStr = "";
String tmpStr = "";
int numFlg = 0;
for (int i=0; i<str.length(); i++) {
if (numFlg == 0){
if ((str.charAt(i)-'0')>=0 && ('9'-str.charAt(i))>=0) {
numFlg = 1;
} else if ((str.charAt(i)-'a')>=0 && ('z'-str.charAt(i))>=0) {
numFlg = 2;
} else if ((str.charAt(i)-'A')>=0 && ('Z'-str.charAt(i))>=0) {
numFlg = 3;
} else {
numFlg = 0;
continue;
}
}
if ((str.charAt(i)-'0')>=0 && ('9'-str.charAt(i))>=0) {
if (numFlg == 1) {
tmpStr += str.charAt(i);
} else {
numFlg = 1;
if (tmpStr.length() > subStr.length()) {
subStr = tmpStr;
tmpStr = String.valueOf(str.charAt(i));
}
}
} else if ((str.charAt(i)-'a')>=0 && ('z'-str.charAt(i))>=0) {
if (numFlg == 2) {
tmpStr += str.charAt(i);
} else {
numFlg = 2;
if (tmpStr.length() > subStr.length()) {
subStr = tmpStr;
tmpStr = String.valueOf(str.charAt(i));
}
}
} else if ((str.charAt(i)-'A')>=0 && ('Z'-str.charAt(i))>=0) {
if (numFlg == 3) {
tmpStr += str.charAt(i);
} else {
numFlg = 3;
if (tmpStr.length() > subStr.length()) {
subStr = tmpStr;
tmpStr = String.valueOf(str.charAt(i));
}
}
} else {
if (tmpStr.length() > subStr.length()) {
numFlg = 0;
subStr = tmpStr;
tmpStr = String.valueOf(str.charAt(i));
}
}
}
if (tmpStr.length() > subStr.length()) {
subStr = tmpStr;
}

System.out.print(subStr);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐