程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 獲取最大長度存在顛倒字符串的子串

獲取最大長度存在顛倒字符串的子串

編輯:關於JAVA

/*******************************************************************************
   * @Description 字符串操作類
   * @Author [email protected]
   * @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"));
    }
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved