算法题:将一个字符串进行反转:将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”
发布日期:2021-05-08 23:17:19 浏览次数:21 分类:博客文章

本文共 3897 字,大约阅读时间需要 12 分钟。

将一个字符串进行反转:将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg” 方式一:转换为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;    }@Test//测试代码    public void testReverse(){        String str = "abcdefg";        String reverse = reverse2(str, 2, 5);        System.out.println(reverse);    }

 

 

 

//方式二:使用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;    }
package com.atguigu.exer; import org.junit.Test; /**  * @author CH  * @create 2021 上午 10:07  */ public class StringDemo {     /*     将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”     方式一:转换为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 = reverse1(str, 2, 5);         System.out.println(reverse);     } }

StringBuffer 类不同于String ,其对象必须使用构造器生成。有 三 个 构造 器 :

StringBuffer() :初始为 容量为16 的字符串缓冲区
StringBuffer(int size) :构造 指定容量的字符串缓冲区
StringBuffer(String str) :将 内容初始化为指定字符串内容

 

StringBuffer 类的常用方法

StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
StringBuffer delete(int start,int end):删除指定位置的内容
StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str
StringBuffer insert(int offset, xxx):在指定位置插入xxx
StringBuffer reverse() :把当前字符序列逆转
 当append和insert时,如果原来value数组长度不够,可扩容。
 如上这些方法支持方法链操作。

 
上一篇:算法题:获取一个字符串在另一个字符串中出现的次数
下一篇:JDK8之前日期时间API

发表评论

最新留言

很好
[***.229.124.182]2025年03月30日 23时39分36秒