美文网首页
541. Reverse String II

541. Reverse String II

作者: namelessEcho | 来源:发表于2017-09-26 22:31 被阅读0次

    Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.

    class Solution {
        public String reverseStr(String s, int k) {
            StringBuilder sb = new StringBuilder (s);
            int len =  s.length();
            int count = len/(2*k);
            int remain = len%(2*k);
             if(count>0)
             {
                  for(int i = 0 ;i<count;i++ )
               {
                int start = 2*k*i;
                int end = 2*k*i+k-1;
               reverse(sb,start,end);
               }
             }
            if(remain<k)
            {
                int start =2*k*count;
                int end =2*k*count+remain-1;
                reverse(sb,start,end);
            }
            else
            {
                int start =2*k*count;
                int end =2*k*count+k-1;
                reverse(sb,start,end);
            }
            return sb.toString();
        }
        private void reverse (StringBuilder sb,int start,int end)
        {
            while(start<=end)
            {
                char temp = sb.charAt(start);
                sb.setCharAt(start,sb.charAt(end));
                sb.setCharAt(end,temp);
                start++;
                end--;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:541. Reverse String II

          本文链接:https://www.haomeiwen.com/subject/lineextx.html