栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

剑指offer.58-I.翻转单词顺序之双指针或是快慢指针拿到一个窗口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指offer.58-I.翻转单词顺序之双指针或是快慢指针拿到一个窗口

翻转单词顺序
  • 前言
  • 一、双指针
    • 1、源码
  • 二、分割法
    • 1、源码
  • 总结

前言

可以使用双指针来完成,或是将字符串通过库函数分割成字符串数组,然后到起来组合。

一、双指针

通过两个指针从后到前来拿到一段字符即一个单词。不断更新两个指针来完成倒叙。

1、源码
//剑指offer.58-I翻转单词顺序
    public String reverseWords(String s) {
        //将前面的单词和对应后面的单词互换。
        StringBuilder cache = new StringBuilder();
        s = s.trim();
        int slow = s.length(), fast = s.length() - 1;
        for (; fast >= 0; fast--) {
            if (s.charAt(fast) == ' ') {
                cache.append(s.substring(fast + 1, slow)).append(' ');
                while (fast > 0) {
                    fast--;
                    if (s.charAt(fast) != ' ') {
                        slow = fast + 1;
                        break;
                    }
                }
            }
        }
        return cache.append(s.substring(0, slow)).toString();
    }
二、分割法

使用Java库函数split来分成字符串数组,然后不要里面的空字符串“”,然后倒叙连接起来。

1、源码
public String reverseWords(String s) {
        String[] strs = s.trim().split(" "); // 删除首尾空格,分割字符串
        StringBuilder cache = new StringBuilder();
        for (int i = strs.length - 1; i > 0; i--) { // 倒序遍历单词列表
            if ("".equals(strs[i])) continue; // 遇到空单词则跳过
            cache.append(strs[i]).append(' '); // 将单词拼接至 StringBuilder
        }
        return cache.append(strs[0]).toString(); // 转化为字符串,删除尾部空格,并返回
    }
总结

1)找到知识与问题的联系,然后理清思路,最后再写代码。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337035.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号