leetcode:Reverse Words in a String

本文详细阐述了一种解析并翻转字符串中单词的算法,通过使用双指针技巧,有效处理了字符串中空格的问题,确保每个单词都能正确地被翻转输出。该方法不仅适用于简单的字符串操作,还能作为更复杂文本处理任务的基础,如自然语言处理等领域的应用。


翻转单词,解析出字符串里面的每一个单词,然后将其逆序输出。所以本题的关键是怎么解析出每一串的单词

定义两个字针i,j,i字针总是指向单词的开头(过滤掉空格字符),j字针指向字针i开头的之后字符串中的第一个空格符,那么i-j间的就是一个单词,但是遍历到最后

需要注意j不能超过字符串的长度,遍历结束之后还是要再判断一次有没有漏掉最后一个单词


public class Solution {
    public String reverseWords(String s) {
       char[] str = s.toCharArray();
       List<String> list = new ArrayList<>();
       int i = 0,j = 0;
       while(i < str.length && str[i] == ' ') i++;
       for( j = i + 1; j < str.length; ){
           while(j < str.length && str[j] != ' ')j++;
           list.add(new String(str, i ,j - i));
           i = j;
           while(i < str.length && str[i] == ' ') i++;   
           j = i + 1;
       }
       if(i < str.length && j >= str.length){
           list.add(new String(str, i, j - i));
       }
       StringBuilder sb = new StringBuilder();
       for(i = list.size() - 1; i >= 1; --i){
           sb.append(list.get(i));
           sb.append(' ');
       }
       if(list.size() != 0)
        sb.append(list.get(0));
       return sb.toString();
    }
    void reverse(List list){
        
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值