获取字符串长度:获取最大长度存在巅倒字符串的子串代码来源: 发布时间:星期三, 2008年9月10日 浏览:91次 评论:0
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")); } } 0
相关文章
读者评论
发表评论 |