/******************************************************************************* * @Description 字符串操作类 * @Author * @Date // ******************************************************************************/ public class StringX { /* * @Function 从指定字符串中获取最大长度存在巅倒字符串的子串 * @Parm str String 源字符串 * @Return 存在巅倒字符串的最大子串存在多个时仅返回最右边的一个 */ public String getMaxLenReverseString(String str) { int startIndex = ; int lenOfReverseStr = ; int tmp = ; for ( int i = lenOfReverseStr; i <= strlength(); i++ ) { tmp = getPosOfReverseString(str i); if ( tmp != ) { lenOfReverseStr = i; startIndex = tmp; str = strsubstring( tmp + lenOfReverseStr); } else { break; } } return startIndex == ? strsubstring() : strsubstring(startIndexstartIndex + lenOfReverseStr); } /* * @Function 从指定字符串中获得最右边特定长度存在其巅倒字符串的子串的起始位置 * @Parm str String 源字符串将从中获取存在巅倒字符串的子串 * @Parm lenOfReverseStr int 巅倒字符串的长度 * @Return int 存在巅倒字符串的子串的起始位置如不存在子串的巅倒字符串或参数错误才返回 */ public int getPosOfReverseString(String str int lenOfReverseStr) { if ( lenOfReverseStr > strlength() || lenOfReverseStr < ) { return ; } for ( int i = strlength() lenOfReverseStr; i >= ; i ) { if ( strindexOf(getReverseString(strilenOfReverseStr)) != ) { return i; } } return ; } /* * @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 > strlength() || tmp < || s * len < ) { return ; } StringBuilder reverseStr = new StringBuilder(len); for ( int i = s + len ; i >= s; i ) { reverseStrappend(strcharAt(i)); } return reverseStrtoString(); } public static void main(String[] args) { StringX objTest = new StringX(); Systemoutprintln(objTestgetMaxLenReverseString(ARSTUVYWFDEVUTSRZ)); Systemoutprintln(objTestgetMaxLenReverseString(ABC)); Systemoutprintln(objTestgetMaxLenReverseString(DEFDEDJH)); Systemoutprintln(objTestgetMaxLenReverseString(HIJKLKJIH)); } } |