欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java字符串中指定部分反轉(zhuǎn)的三種方式

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

將“asdfghj”反轉(zhuǎn)為“ashgfdj”

方式一:把字符串轉(zhuǎn)化為char[]

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

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("反轉(zhuǎn)后為:" + 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;
    }
}

運行結(jié)果:

反轉(zhuǎn)后為:ashgfdj

方式二:使用String的拼接

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

    public static void main(String[] args) {
        StringDemo stringDemo = new StringDemo();
        String str1 = "asdfghj";
        String str2 = stringDemo.reverse1(str1,2,5);
        System.out.println("反轉(zhuǎn)后為:" + 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;
    }

運行結(jié)果:

反轉(zhuǎn)后為: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("反轉(zhuǎn)后為:" + 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();
    }
}

運行結(jié)果:

反轉(zhuǎn)后為:ashgfdj

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

附實戰(zhàn)例子

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

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

代碼如下:

/**
 * 字符串指定的部分進行反轉(zhuǎn)
 * @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("旋轉(zhuǎn)了指定位置后的字符串: "+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);
    }
}

總結(jié)

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

相關(guān)文章

  • java實戰(zhàn)小技巧之字符串與容器互轉(zhuǎn)詳解

    java實戰(zhàn)小技巧之字符串與容器互轉(zhuǎn)詳解

    Java.lang.String是Java的字符串類. Srting是一個不可變對象,下面這篇文章主要給大家介紹了關(guān)于java實戰(zhàn)小技巧之字符串與容器互轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Java多線程并發(fā)編程 并發(fā)三大要素

    Java多線程并發(fā)編程 并發(fā)三大要素

    這篇文章主要介紹了Java多線程并發(fā)編程 并發(fā)三大要素,需要的朋友可以參考下
    2017-05-05
  • 解決feign調(diào)用接口不穩(wěn)定的問題

    解決feign調(diào)用接口不穩(wěn)定的問題

    這篇文章主要介紹了解決feign調(diào)用接口不穩(wěn)定的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringBoot配置開發(fā)環(huán)境的詳細步驟(JDK、Maven、IDEA等)

    SpringBoot配置開發(fā)環(huán)境的詳細步驟(JDK、Maven、IDEA等)

    文章介紹了如何配置SpringBoot開發(fā)環(huán)境,包括安裝JDK、Maven和IDEA,并提供了詳細的步驟和配置方法,感興趣的朋友一起看看吧
    2024-12-12
  • idea2020.1.3 手把手教你創(chuàng)建web項目的方法步驟

    idea2020.1.3 手把手教你創(chuàng)建web項目的方法步驟

    這篇文章主要介紹了idea 2020.1.3 手把手教你創(chuàng)建web項目的方法步驟,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 基于Spring Boot不同的環(huán)境使用不同的配置方法

    基于Spring Boot不同的環(huán)境使用不同的配置方法

    下面小編就為大家分享一篇基于Spring Boot不同的環(huán)境使用不同的配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Java實現(xiàn)順序表的增刪查改功能

    Java實現(xiàn)順序表的增刪查改功能

    這篇文章主要介紹了Java實現(xiàn)順序表的增刪查改功能,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Java 敏感信息加密處理

    Java 敏感信息加密處理

    本文主要介紹了Java 敏感信息加密處理的相關(guān)知識:1)敏感信息加密處理我們要實現(xiàn)什么;2)敏感信息加密處理我做了些什么;3)敏感信息加密實現(xiàn)方法。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • Spring?Boot?RestController接口輸出到終端的操作代碼

    Spring?Boot?RestController接口輸出到終端的操作代碼

    這篇文章主要介紹了Spring?Boot?RestController接口如何輸出到終端,使用?HttpServletResponse?類,可以在使用curl執(zhí)行?Spring?Boot?REST接口的同時,在控制臺輸出一些信息,給運維人員知道當前命令執(zhí)行的狀態(tài),感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • Spring深入刨析聲明式事務(wù)

    Spring深入刨析聲明式事務(wù)

    在spring注解中,使用聲明式事務(wù),需要用到兩個核心的注解:@Transactional注解和@EnableTransactionManagement注解。將@Transactional注解加在方法上,@EnableTransactionManagement注解加在配置類上
    2022-12-12

最新評論