代码随想录打卡第8天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符串

class Solution {

    public void reverseString(char[] s) {

        int left=0;

        int right=s.length-1;

        while(left<right)

        {

            char tmp=s[left];

            s[left]=s[right];

            s[right]=tmp;

            left++;

            right--;

        }

    }

}

 挺简单的

 

class Solution {

    public String reverseStr(String s, int k) {

        StringBuffer res=new StringBuffer();

        int start = 0;

        int len=s.length();

        while(start<len)

        {

            StringBuffer temp = new StringBuffer();

            int firstk = (start+k)>len?len:(start+k);

            int sencondk = (start+2*k)>len?len:(start+2*k);

            temp.append(s.substring(start,firstk));

            res.append(temp.reverse());

            if(firstk<sencondk){

                res.append(s.substring(firstk,sencondk));

            }

            start+=2*k;

        }

        return res.toString();

    }

}

 这道题对于我来说,挺难的,因为里面用到了很多函数,这些我都不熟悉,以及,怎么处理反转的范围这里,我也没有一个比较好的想法

 

这道题目我直接使用了replace函数,就不放代码了,很简单,感觉这道题目是上一道题目的简单版

 

class Solution {

    public String reverseWords(String s) {

        StringBuffer res = new StringBuffer();

        s=s.trim();

        int start;

        int len=s.length();

        int end=len-1;

        while(end>=0)

        {

            if(s.charAt(end)!=' ')

            {

                start=end;

                while(s.charAt(start)!=' '&&start>0)

                {

                    start--;

                }

                start=s.charAt(start)==' '?start+1:start;

                res.append(s.substring(start,end+1));

                if(start!=0)

                    res.append(" ");

                end=start-1;

            }else {

                end--;

            }

        }

        return res.toString();

    }

}

 感觉还不错,没有很难,就是截取的头尾需要细心一点

 

我之前做过,思路有点难以想到,想到就很简单 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值