LeetCode151翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:
输入: "the sky is blue"
输出: "blue is sky the"

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

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

package String;

public class LeetCode151_01 {
    public static void main(String[] args) {
        String s = "Hello LeetCode i love you";
        System.out.println(reverseWords(s));
    }
    public static String reverseWords(String s){
        if (s.length()==0 || s==null){
            return "";
        }/*StringBuilder是一个可以动态改变长度的字符序列,也就是说,你可以在任何时候修改它的内容,增加、删除或替换其中的字符。
        这与字符串(String)不同,因为String在Java中是不可变的,一旦创建,其内容就不能被改变。
        StringBuilder类提供了一系列方法来操作字符串,比如append()用于在序列的末尾添加新的字符或字符串,
        insert()用于在指定位置插入新的字符或字符串,delete()用于删除序列中的某段字符,
        replace()用于替换序列中的某段字符,reverse()用于反转序列中的所有字符等。
        StringBuilder的一个重要特性是线程不安全,这意味着它不是同步的,不能在多线程环境中安全地共享。
        如果需要在多线程环境中使用可变的字符串,应该使用StringBuffer类,它是StringBuilder的线程安全版本。
        例如,下面的代码展示了如何使用StringBuilder:
        StringBuilder sb = new StringBuilder();
        sb.append("Hello");
        sb.append(" ");
        sb.append("World");
        System.out.println(sb);  // 输出:Hello World

        sb.insert(6, ",");  // 在位置6插入逗号
        System.out.println(sb);  // 输出:Hello, World

        sb.delete(0, 5);  // 删除位置0到4的字符
        System.out.println(sb);  // 输出:, World

        sb.replace(0, 2, "H");  // 替换位置0到1的字符
        System.out.println(sb);  // 输出:H World

        sb.reverse();  // 反转字符串
        System.out.println(sb);  // 输出:dlroW H*/
        StringBuilder sb = new StringBuilder();
        //字符串不为空,它将使用正则表达式\\s+(匹配一个或多个空白符)来分割字符串,得到一个单词数组。
        String[] words = s.trim().split("\\s+");
        /*trim函数用于移除字符串两端的空白字符,使得字符串更加干净,没有前导或尾随的空白
        String str = " Hello World! ";
        str = str.trim();  // 结果是 "Hello World!"*/
        for (int i = words.length-1; i >=0 ; i--) {
            sb.append(words[i]);
            if (i!=0){
                sb.append(" ");
            }
        }
        return sb.toString();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值