2021-08-20leetcode刷題——541、反轉(zhuǎn)字符串 II

【微信公眾號:yi極】

反轉(zhuǎn)字符串 II

題目描述:

給定一個字符串 s 和一個整數(shù) k,從字符串開頭算起,每 2k 個字符反轉(zhuǎn)前 k 個字符。

如果剩余字符少于 k 個,則將剩余字符全部反轉(zhuǎn)。
如果剩余字符小于 2k 但大于或等于 k 個,則反轉(zhuǎn)前 k 個字符,其余字符保持原樣。

方法:

思路:
time 表示字符串反轉(zhuǎn)幾輪,將字符串轉(zhuǎn)化成字符數(shù)組進行操作,反轉(zhuǎn)第一輪時如果字符少于 k 個,則將字符全部反轉(zhuǎn),否則反轉(zhuǎn)前 k 個字符,其余字符保持原樣。
第一輪反轉(zhuǎn)過后,time 加一,重復之前操作。

public class Solution {
    /*
     * 執(zhí)行用時: 0 ms
     * 內(nèi)存消耗: 38.5 MB
     * */
    public static String reverseStr(String s, int k) {
        
        int len = s.length();
        int times = 1;
        
        char [] ch = s.toCharArray();
        
        for(int i = 0; i < len; ){
            int j = Math.min(len, times*2*k);
            int dis = j - i;
            if (dis < k){
                reverse(ch, i, j-1);
            } else {
                reverse(ch, i, i+k-1);
            }
            times++;
            i = j;
        }

        return String.valueOf(ch);
    }
    
    private static void reverse(char[] ch, int start, int end) {
        
        int i = start;
        int j = end;
        
        while(i < j){
            char temp = ch[i];
            ch[i] = ch[j];
            ch[j] = temp;
            i++;
            j--;
        }
    }
}

注意:Java中valueof()的使用

valueof()方法可將基本數(shù)據(jù)類型轉(zhuǎn)換成 String類型,有下列幾種:

String.valueOf(boolean b)                            //將 boolean 變量 b 轉(zhuǎn)換成字符串 

String.valueOf(char c)                               //將 char 變量 c 轉(zhuǎn)換成字符串 

String.valueOf(char[] data)                          //將 char 數(shù)組 data 轉(zhuǎn)換成字符串 

String.valueOf(double d)                             //將 double 變量 d 轉(zhuǎn)換成字符串 

String.valueOf(float f)                              //將 float 變量 f 轉(zhuǎn)換成字符串 

String.valueOf(int i)                                //將 int 變量 i 轉(zhuǎn)換成字符串 

String.valueOf(long l)                               //將 long 變量 l 轉(zhuǎn)換成字符串 

String.valueOf(Object obj)                           //將 obj 對象轉(zhuǎn)換成 字符串, 等于 obj.toString() 

String.valueOf(char[] data, int offset, int count)   //將字符數(shù)組data中從offset開始count長度的字符轉(zhuǎn)換成字符串。

測試代碼:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    
    System.out.printf("請輸入字符串s = ");
    String str = sc.nextLine();
    
    System.out.printf("請輸入整數(shù)k = ");
    int num = sc.nextInt();
    
    System.out.println(reverseStr(str, num));
}

運行結(jié)果:
屏幕截圖1.png
屏幕截圖2.png
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容