计算一个字符串中最大的子串的长度,并将它返回。如“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); }
相关文章推荐
- 如果字符串的一个子串(其长度大于 1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中的最大等值子串 函数返回最大等值子串的长度,如果没有则返回1。 例如: 若S= “abc123abc1
- 给定一个字符串s,找出s中最长的回文子串,你可以假设s的最大长度是1000。
- 给定一个字符串,返回字符串中没有重复字符的最长子串的长度
- 输入一个字符串,要求找出字符串中最大子串的长度
- 得到一个字符串最大无重复子串长度
- 一个字符串去除里面的数字,把剩下的字符输出 和 一个字符串计算最大单词的长度并输出这个单词
- 求一个字符串的最长不重复子串的最大长度
- 输入一个字符串,输出该字符串中最大对称子串的长度
- 对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
- 对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
- Longest Substring Without Repeating Characters计算字符串中不含有重复字符的连续字符串的最大长度
- 给定一个表示分数加减表达式的字符串,需要以字符串格式返回计算结果。结果表达式也是分数式
- 输入一个字符串,输出该字符串中对称的子字符串的最大长度。
- python 计算字符串长度,一个中文算两个字符
- 华为机试:计算两个字符串的最大公共字串的长度,字符不区分大小写
- zoj Rescue the Rabbit AC自动机+状态压缩DP n个有价值的子串,求长度为len的字符串的最大值(每子串的值最多用一次)
- 完美字符串 输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。如dad 77
- 计算两个字符串最大公有子串
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- poj 3294 Life Forms(n个字符串中 求公共子串长度超过k得最大子串 后缀数组)