[Leetcode in Java] 541. Reverse String II


Posted by LarsonKao on 2022-04-30

541. Reverse String II

Link

難易度 : Easy

question

又是一題string reverser的變形
題目給予一個string經作操作後回傳一個string,統整完題目的意思後其實可以歸納成兩類

  1. 剩餘字元數 >= k : 翻轉前 k 個字元
  2. 剩餘字元數 < k : 剩餘字元全數翻轉

因此作法上只要注意一下兩個case的指針start與end就可以很輕鬆地寫出來

    class Solution {
        public String reverseStr(String s, int k) {
            char[] chars = s.toCharArray();
            char tmp;
            for(int i=0;i<s.length();i+=2*k) 
            {
                int start,end;
                //判斷剩餘的個數是否有超過k個
                //若有超過則執行reverse前k的字元
                //若沒超過則剩餘字元全部reverse
                if(chars.length-i>=k) 
                {
                    start=i;
                    end=i+k-1;
                }
                else 
                {
                    start=i;
                    end = chars.length-1;
                }
                while(start<end) 
                {
                    tmp = chars[start];
                    chars[start] = chars[end];
                    chars[end] = tmp;
                    start++;
                    end--;
                }
            }          
            return new String(chars);
        }
    }

result

特別需要注意的是回傳是 String 型態,若直接將char[]回傳將會發生意外XD


#Leetcode #java #algorithm #string







Related Posts

JavaScript 學習筆記 - Conversior

JavaScript 學習筆記 - Conversior

安裝RabbitMQ Server

安裝RabbitMQ Server

CSS保健室|background-image

CSS保健室|background-image


Comments