【LeetBook第一轮】数组和字符串-翻转字符串里的单词

https://leetcode.cn/leetbook/read/array-and-string/crmp5/icon-default.png?t=N3I4https://leetcode.cn/leetbook/read/array-and-string/crmp5/

给你一个字符串 s ,请你反转字符串中 单词 的顺序。

单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。

返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

输入:s = "a good   example"
输出:"example good a"
解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

方法1 : 递归 

trim()方法

subString()的大量使用

class Solution {
    public String reverseWords(String s) {
        //递归方法
        //String的trim()方法:返回一个字符串,其值为此字符串,并删除任何前导和尾随空格。
        s = s.trim();
        int len = s.length();
        while(len > 0){
            len--;
            //检测到空格,输出空格至串尾的部分,并将串s裁剪为空格前的部分,递归裁剪后的s。
           if(s.charAt(len) == ' '){
                String word = s.substring(len+1,s.length());
                return word + " " + reverseWords(s.substring(0,len));

           }
        }
        return s;

    }
}

方法2:数组的翻转 + 空格剪切

要点难点:

while(len--)的妙用;

split()的最基础应用;

使用StringBuffer;

toString()方法。



    public static String reverseWord(String s){
        //split(“a”)方法:用a分割字符串组成数组。
        // 这里的是用空格分割s,但单词内部还可能残余空格,需要后续去除
        String[] wordArray = s.split(" ");
        int len = wordArray.length;
        //构建StringBuffer,方便进行数组操作,并保存翻转后的结果
        StringBuffer stringBuffer = new StringBuffer();
        while(len-- > 0){
            //len--先执行表达式再赋值
            //数组的翻转:从后往前遍历数组,遇到空格跳过。
            // 若非空格,则将索引为len的字符串添加至stringBuffer中
            if(! wordArray[len].isEmpty()){
                //当stringBuffer非空时,用空格隔开相邻的单词
                if(stringBuffer.length()>0){
                    stringBuffer.append(" ");
                }
                stringBuffer.append(wordArray[len]);
            }
        }
        //用toString()方法输出stringBuffer的内容
        return stringBuffer.toString();
    }


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值