Java_18 字符串中的单词反转

字符串中的单词反转

你在与一位习惯从右往左阅读的朋友发消息,他发出的文字顺序都与正常相反但单词内容正确,为了和他顺利交流你决定写一个转换程序,把他所发的消息 message 转换为正常语序。

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

示例 1:

输入: message = "the sky is blue"
输出: "blue is sky the"

示例 2:

输入: message = "  hello world!  "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:

输入: message = "a good   example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

提示:

  • 1 <= message.length <= 10^4
  • message 中包含英文大小写字母、空格和数字
  • message 中至少有一个单词

来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


自己心累的解题思路,就不赘述了

能量流失迅速,心力憔悴,待我缓缓

/*
class Solution {
    public void jiaohuan(char[] chr, int first,int last,char[] char1){
        char temp=' ';
        int i=0;
        for(i=first;i<last;i++){

        }
    }


    public String reverseMessage(String message) {
        String str1=message.trim();//去除字符串首尾的空格
        char[] chr=str1.toCharArray();

        //去除字符间的多个空格
        int slow=2,fast=2;
        for(fast=2;fast<str1.length()-2;fast++){
            if(chr[fast-1]==' '|chr[fast+1]==' '){
                continue;
            }
            chr[slow]=chr[fast];
            slow++;
        }

        //进行交换
        int len=slow+2;
        int prevSpaceIndex=-1;
        char[] char1= new char[len];
        for(int i=0;i<len;i++){
            if(chr[i]==' '){
                jiaohuan(chr,prevSpaceIndex+1,i-1,char1);
                prevSpaceIndex=i;
            }
        }
        jiaohuan(chr,prevSpaceIndex+1,len-1);


    }
}
*/

参考后的解答

class Solution {
    public String reverseMessage(String message) {
        message = message.trim();
        String[] tokens = message.split("\\s+");
        int left = 0, right = tokens.length - 1;
        while(left < right) {
            String temp = tokens[left];
            tokens[left++] = tokens[right];
            tokens[right--] = temp;
        }
        return String.join(" ", tokens);

    }
}

思绪及感悟

一开始:简单的类型?一看题目好熟悉的套路,易如反掌!

到最后做不下去了,心态有点小崩溃。理想和现实的巨大落差感,一瞬间把我的能量都给抽走

√能够先熟悉string的操作再做题

√能够回忆起先前的答题方法

×题目都不看明白就嘎嘎做(感觉是今天最大的问题)

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值