最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java字符串中指定部分反轉的三種方式

 更新時間:2022年01月04日 15:14:59   作者:我不是偉人0  
一些面試官可能在面試Java基礎的時候,讓你說一下字符串反轉,會手撕代碼,所以下面這篇文章主要給大家介紹了關于Java字符串中指定部分反轉的三種方式,需要的朋友可以參考下

將“asdfghj”反轉為“ashgfdj”

方式一:把字符串轉化為char[]

調(diào)用String類中toCharArray()方法把字符串轉化為字符,而后開始時索引和結束時索引利用for()循環(huán)反轉指定字符,結束

public class StringDemo {
 
    public static void main(String[] args) {
        StringDemo stringDemo = new StringDemo();
        String str1 = "asdfghj";
        String str2 = stringDemo.reverse1(str1,2,5);
        System.out.println("反轉后為:" + str2);
    }
 
    public String reverse1(String str, int start, int end) {
        if (str != null) {
            char[] charArray = str.toCharArray();
            for (int i = start, j = end; i < j; i++, j--) {
                char temp = charArray[i];
                charArray[i] = charArray[j];
                charArray[j] = temp;
            }
            return new String(charArray);
        }
        return null;
    }
}

運行結果:

反轉后為:ashgfdj

方式二:使用String的拼接

將字符串分割為三部分:需反轉字符串前,需反轉字符串,需反轉字符串之后,調(diào)用substring()方法截取字符串,循環(huán)倒序遍歷需反轉字符串部分,后拼接這三部分

    public static void main(String[] args) {
        StringDemo stringDemo = new StringDemo();
        String str1 = "asdfghj";
        String str2 = stringDemo.reverse1(str1,2,5);
        System.out.println("反轉后為:" + str2);
    }
 
    public String reverse1(String str, int start, int end) {
        // 第一部分
        String newStr = str.substring(0, start);
        // 第二部分
        for (int i = end; i >= start; i--) {
            newStr += str.charAt(i);
        }
        // 第三部分
        newStr += str.substring(end + 1);
        return newStr;
    }

運行結果:

反轉后為:ashgfdj

方式三:使用StringBuffer/StringBuilder替換String

相較于方式二的改進,用Stringbuilder中append()方法代替方式二中“+=”,效率更高

public class StringDemo {
 
    public static void main(String[] args) {
        StringDemo stringDemo = new StringDemo();
        String str1 = "asdfghj";
        String str2 = stringDemo.reverse1(str1,2,5);
        System.out.println("反轉后為:" + str2);
    }
 
    public String reverse1(String str, int start, int end) {
        StringBuffer s = new StringBuffer(str.length());
        // 第一部分
        s.append(str.substring(0, start));
        // 第二部分
        for (int i = end; i >= start; i--) {
            s.append(str.charAt(i));
        }
        // 第三部分
        s.append(str.substring(end + 1));
        return s.toString();
    }
}

運行結果:

反轉后為:ashgfdj

注:在方式三中,僅是字符串反轉操作,不需要考慮線程安全問題,所以優(yōu)先選擇StringBuilder

附實戰(zhàn)例子

對字符串中指定的部分進行旋轉,如str="mmabcdfeffnn",指定abcdfeff部分進行旋轉,則得到字符串str="mmffefdcbann"。

其實現(xiàn)的思路,我是這樣的:將源字符串分為三部分,頭,待旋轉,尾,其中這三部分都需要進行采取截取的操作,而對于待旋轉的部分,這里采用了一個技巧,那就是借用了StringBuffer(String string)作為中介,并調(diào)用其中的reverse()方法進行旋轉。最后得到的三部分:頭,已旋轉,尾,進行連接concat(String string)操作即可。

代碼如下:

/**
 * 字符串指定的部分進行反轉
 * @author zhonglinsen
 * 2016-3-1 下午
 */
public class StringReverse {
    public static void main(String[] args) {
        String str="mmabcdefnn";
        int start=2;
        int end=7;
         
        System.out.println("原先字符串:          "+str);
        String strNew=strReverse(str, start, end);
        System.out.println("旋轉了指定位置后的字符串: "+strNew);
    }
     
    public static String strReverse(String strArg,int start,int end){
         
        String strStart=strArg.substring(0,start);
         
        String strEnd=strArg.substring(end+1,strArg.length());
 
        String strSub=strArg.substring(start, end+1);
 
        StringBuffer sb=new StringBuffer(strSub);
        strSub=sb.reverse().toString();
         
        return strStart.concat(strSub).concat(strEnd);
    }
}

總結

到此這篇關于Java字符串中指定部分反轉的文章就介紹到這了,更多相關Java字符串指定部分反轉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • spring boot2結合mybatis增刪改查的實現(xiàn)

    spring boot2結合mybatis增刪改查的實現(xiàn)

    這篇文章主要給大家介紹了關于spring boot2結合mybatis增刪改查的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring boot2具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • java實現(xiàn)水果超市管理系統(tǒng)

    java實現(xiàn)水果超市管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)水果超市管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 關于maven打包時的報錯: Return code is: 501 , ReasonPhrase:HTTPS Required

    關于maven打包時的報錯: Return code is: 501 , ReasonPhrase:HTTPS Requ

    這篇文章主要介紹了關于maven打包時的報錯: Return code is: 501 , ReasonPhrase:HTTPS Required,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • intellij idea 啟動tomcat 1099端口被占用的解決

    intellij idea 啟動tomcat 1099端口被占用的解決

    這篇文章主要介紹了intellij idea 啟動tomcat 1099端口被占用的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • jasypt SaltGenerator接口定義方法源碼解讀

    jasypt SaltGenerator接口定義方法源碼解讀

    這篇文章主要為大家介紹了jasypt SaltGenerator接口定義方法源碼解讀,,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Java中equals()方法實例詳解

    Java中equals()方法實例詳解

    equals方法是java.lang.Object類的方法,下面這篇文章主要給大家介紹了關于Java中equals()方法的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • java實現(xiàn)酷狗音樂臨時緩存文件轉換為MP3文件的方法

    java實現(xiàn)酷狗音樂臨時緩存文件轉換為MP3文件的方法

    這篇文章主要介紹了java實現(xiàn)酷狗音樂臨時緩存文件轉換為MP3文件的方法,涉及java針對文件操作的相關技巧,需要的朋友可以參考下
    2016-08-08
  • java類的加載過程以及類加載器的分析

    java類的加載過程以及類加載器的分析

    這篇文章給大家詳細講述了java類的加載過程以及類加載器的相關知識點內(nèi)容,有需要的朋友可以學習下。
    2018-08-08
  • SpringBoot解決ajax跨域問題的方法

    SpringBoot解決ajax跨域問題的方法

    這篇文章主要為大家詳細介紹了SpringBoot解決ajax跨域問題的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Jackson 反序列化時實現(xiàn)大小寫不敏感設置

    Jackson 反序列化時實現(xiàn)大小寫不敏感設置

    這篇文章主要介紹了Jackson 反序列化時實現(xiàn)大小寫不敏感設置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論

鞍山市| 随州市| 大城县| 新巴尔虎左旗| 即墨市| 大田县| 三江| 绥宁县| 怀来县| 桦甸市| 和田市| 类乌齐县| 古浪县| 大新县| 灌云县| 竹溪县| 抚顺市| 凤阳县| 开平市| 黑山县| 台安县| 新沂市| 宜阳县| 内丘县| 乌拉特前旗| 化隆| 河西区| 焉耆| 武宁县| 金溪县| 濮阳县| 麻江县| 新蔡县| 辽阳县| 云龙县| 虎林市| 长岛县| 二连浩特市| 东光县| 吉木萨尔县| 黎平县|