快速业务通道

获取最大长度存在颠倒字符串的子串 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

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

时间:2011-02-13

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号