1.将一个字符串进行反转。将字符串中指定部分进行反转。

 public class StringDemo {
     //方式一:转换为char[]
     public String reverse(String str,int startIndex,int endIndex){

         if(str != null){
             char[] arr = str.toCharArray();
             for(int x = startIndex,y = endIndex;x < y;x++,y--){
                 char temp = arr[x];
                 arr[x] = arr[y];
                 arr[y] = temp;
             }

             return new String(arr);
         }
         return null;
     }

     //方式二:使用String的拼接
     public String reverse1(String str,int startIndex,int endIndex){
         if(str != null){
             //第1部分
             String reverseStr = str.substring(0,startIndex);
             //第2部分
             for(int i = endIndex;i >= startIndex;i--){
                 reverseStr += str.charAt(i);
             }
             //第3部分
             reverseStr += str.substring(endIndex + 1);

             return reverseStr;

         }
         return null;
     }
     //方式三:使用StringBuffer/StringBuilder替换String
     public String reverse2(String str,int startIndex,int endIndex){
         if(str != null){
             StringBuilder builder = new StringBuilder(str.length());

             //第1部分
             builder.append(str.substring(0,startIndex));
             //第2部分
             for(int i = endIndex;i >= startIndex;i--){

                 builder.append(str.charAt(i));
             }
             //第3部分
             builder.append(str.substring(endIndex + 1));

             return builder.toString();
         }
         return null;

     }

     @Test
     public void testReverse(){
         String str = "abcdefg";
         String reverse = reverse2(str, 2, 5);
         System.out.println(reverse);
     }

 }

2.获取一个字符串在另一个字符串中出现的次数。

 public class StringDemo {
     public int getCount(String mainStr,String subStr){
         int mainLength = mainStr.length();
         int subLength = subStr.length();
         int count = 0;
         int index = 0;
         if(mainLength >= subLength){
             //方式一:
 //            while((index = mainStr.indexOf(subStr)) != -1){
 //                count++;
 //                mainStr = mainStr.substring(index + subStr.length());
 //            }
             //方式二:对方式一的改进
             while((index = mainStr.indexOf(subStr,index)) != -1){
                 count++;
                 index += subLength;
             }

             return count;
         }else{
             return 0;
         }
     }

     @Test
     public void testGetCount(){
         String mainStr = "abkkcadkabkebfkaabkskab";
         String subStr = "ab";
         int count = getCount(mainStr, subStr);
         System.out.println(count);
     }
 }

3.获取两个字符串中最大相同子串。

 public class StringDemo2 {
     //前提:两个字符串中只有一个最大相同子串
     public String getMaxSameString(String str1,String str2){
         if(str1 != null && str2 != null){
             String maxStr = (str1.length() >= str2.length())? str1 : str2;
             String minStr = (str1.length() < str2.length())? str1 : str2;
             int length = minStr.length();

             for(int i = 0;i < length;i++){
                 for(int x = 0,y = length - i;y <= length;x++,y++){
                     String subStr = minStr.substring(x,y);
                     if(maxStr.contains(subStr)){
                         return subStr;
                     }

                 }
             }

         }
         return null;
     }

     // 如果存在多个长度相同的最大相同子串
     // 此时先返回String[],后面可以用集合中的ArrayList替换,较方便
     public String[] getMaxSameString1(String str1, String str2) {
         if (str1 != null && str2 != null) {
             StringBuffer sBuffer = new StringBuffer();
             String maxString = (str1.length() > str2.length()) ? str1 : str2;
             String minString = (str1.length() > str2.length()) ? str2 : str1;

             int len = minString.length();
             for (int i = 0; i < len; i++) {
                 for (int x = 0, y = len - i; y <= len; x++, y++) {
                     String subString = minString.substring(x, y);
                     if (maxString.contains(subString)) {
                         sBuffer.append(subString + ",");
                     }
                 }
 //                System.out.println(sBuffer);
                 if (sBuffer.length() != 0) {
                     break;
                 }
             }
             String[] split = sBuffer.toString().replaceAll(",$", "").split("\\,");
             return split;
         }

         return null;
     }

     @Test
     public void testGetMaxSameString(){
         String str1 = "abcwerthello1yuiodefabcdef";
         String str2 = "cvhello1bnmabcdef";
         String[] maxSameStrings = getMaxSameString1(str1, str2);
         System.out.println(Arrays.toString(maxSameStrings));

     }

 }

最新文章

  1. 运行Shell脚本的几种方式解析
  2. iframe详细的使用
  3. cut命令
  4. SSIS WITH VERTICA的注意事项总结
  5. hdu 1166 敌兵布阵--BIT
  6. eclipse中的tomcat debug模式启动报超时45s
  7. bitmap的实现方法
  8. 使用Reveal.app调试整个项目UI时间,增加LD指令 -Objc引起项目中多个静态库冲突问题
  9. Java系列--第三篇 基于Maven的Android开发CAIO
  10. OSCLI
  11. 配置FindBugs和常见FindBugs错误
  12. 老李推荐:第6章7节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-注入按键事件实例
  13. Java 反射和内省实现spring的IOC和DI
  14. Select标签 根据value值默认选中 Jquery
  15. java-将评论内容过滤特殊表情emoj符号,保存到mysql中
  16. spring mvc 参数绑定
  17. SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程(缺heartbeat)
  18. 克隆虚拟机重启之后eth0不见的解决方案
  19. Java的图形用户界面的基本工具
  20. 转 UNIGUI安装教程、使用例子

热门文章

  1. JavaScript setTimeout this对象指向问题
  2. 【DCN】路由操作
  3. H3C 帧中继地址映射
  4. Vue 动画的钩子函数
  5. Spring Data Jpa 简单使用事务
  6. P1028 过河问题
  7. C#面试题整理2(带答案)
  8. MySQL 命令行(转)
  9. 微信小程序获取多个input和textarea的值(es6加微信小程序APi)
  10. 超简单!pytorch入门教程(四):准备图片数据集