您的位置:首页 > 其它

获取最大长度存在巅倒字符串的子串

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"));

	}

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