获取最大长度存在巅倒字符串的子串
2008-06-11 14:34
399 查看
/******************************************************************************* * @Description 字符串操作类 * @Author CManLH@163.com * @Date 2008/05/24 ******************************************************************************/ public class StringX { /* * @Function 从指定字符串中获取最大长度存在巅倒字符串的子串 * @Parm str String 源字符串 * @Return 存在巅倒字符串的最大子串,存在多个时,仅返回最右边的一个 */ public String getMaxLenReverseString(String str) { int startIndex = -1; int lenOfReverseStr = 2; int tmp = -1; for ( int i = lenOfReverseStr; i <= str.length(); i++ ) { tmp = getPosOfReverseString(str, i); if ( tmp != -1 ) { lenOfReverseStr = i; startIndex = tmp; str = str.substring(0, tmp + lenOfReverseStr); } else { break; } } return startIndex == -1 ? str.substring(0,1) : str.substring(startIndex,startIndex + lenOfReverseStr); } /* * @Function 从指定字符串中,获得最右边特定长度存在其巅倒字符串的子串的起始位置 * @Parm str String 源字符串,将从中获取存在巅倒字符串的子串 * @Parm lenOfReverseStr int 巅倒字符串的长度 * @Return int 存在巅倒字符串的子串的起始位置.如不存在子串的巅倒字符串或参数错误,才返回-1 */ public int getPosOfReverseString(String str, int lenOfReverseStr) { if ( lenOfReverseStr > str.length() || lenOfReverseStr < 1 ) { return -1; } for ( int i = str.length() - lenOfReverseStr; i >= 0; i-- ) { if ( str.indexOf(getReverseString(str,i,lenOfReverseStr)) != -1 ) { return i; } } return -1; } /* * @Function 从指定字符串中得到其子串的巅倒字符串 * @Parm str String 源字符串,将从中获得巅倒字符串 * @Parm s int 将被巅倒子串在源字符串中的起始位置 * @Parm len int 将被巅倒子串的长度 * @Return String 巅倒后得到的字符串。如参数错误就返回空字符串 */ public String getReverseString(String str, int s, int len) { int tmp = s + len; if ( tmp > str.length() || tmp < 1 || s * len < 0 ) { return ""; } StringBuilder reverseStr = new StringBuilder(len); for ( int i = s + len - 1; i >= s; i-- ) { reverseStr.append(str.charAt(i)); } return reverseStr.toString(); } public static void main(String[] args) { StringX objTest = new StringX(); System.out.println(objTest.getMaxLenReverseString("ARSTUVYWFDEVUTSRZ")); System.out.println(objTest.getMaxLenReverseString("ABC")); System.out.println(objTest.getMaxLenReverseString("DEFDEDJH")); System.out.println(objTest.getMaxLenReverseString("HIJKLKJIH")); } }
相关文章推荐
- java获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印
- 练习二 将字符串反转 练习三 获取关键字出现的次数 练习四 获取2个字符串中最大公共子串
- 获取两个字符串中最大相同子串
- Manacher 算法(求字符串的回文子串的最大长度)
- 字符串的几种应用,去除两端空格,将字符串反串,取出一个字符串在另一个字符串的次数,获取一个字符串在另一个字符串中最大子串
- 求一个字符串的最长不重复子串的最大长度
- 获取两个字符串中最大相同子串
- 如果字符串的一个子串(其长度大于 1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中的最大等值子串 函数返回最大等值子串的长度,如果没有则返回1。 例如: 若S= “abc123abc1
- 字符串中最大对称子串的长度(C++软件工程师面试题)
- 给定一个字符串s,找出s中最长的回文子串,你可以假设s的最大长度是1000。
- (Relax 后缀数组1.4)POJ 2774 Long Long Message(求两个字符串公共子串的最大长度)
- 获取两个字符串中最大的相同子串
- [leetcode]获取字符串中字符不重复的最长子串的长度
- 请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能
- poj 3294 Life Forms(n个字符串中 求公共子串长度超过k得最大子串 后缀数组)
- 面试题12:字符串无重复子串的最大长度
- Java获取两个字符串中最大相同子串
- 获取字符串的最大子串
- zoj Rescue the Rabbit AC自动机+状态压缩DP n个有价值的子串,求长度为len的字符串的最大值(每子串的值最多用一次)
- 获取两个字符串中最大的相同子串