Chinaunix首页 | 论坛 | 博客
  • 博客访问: 805401
  • 博文数量: 780
  • 博客积分: 7000
  • 博客等级: 少将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-12 09:11
文章分类

全部博文(780)

文章存档

2011年(1)

2008年(779)

我的朋友
最近访客

分类:

2008-09-12 09:24:03

    /*******************************************************************************

     * @Description 字符串操作类

     * @Author

     * @Date 2008/05/24

     ******************************************************************************/

    public class StringX {

        /*

         * @Function 从指定字符串中获取最大长度存在巅倒字符串的子串

         * @P 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 从指定字符串中,获得最右边特定长度存在其巅倒字符串的子串的起始位置

         * @P str String 源字符串,将从中获取存在巅倒字符串的子串

         * @P 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 从指定字符串中得到其子串的巅倒字符串

         * @P str String 源字符串,将从中获得巅倒字符串

         * @P s int 将被巅倒子串在源字符串中的起始位置

         * @P 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"));

        }

    }

【责编:landy】

--------------------next---------------------

阅读(344) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~