美文网首页
算法每日一题 - 句子逆序

算法每日一题 - 句子逆序

作者: 野狗子嗷嗷嗷 | 来源:发表于2018-02-02 21:48 被阅读37次

题目描述

原题

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符。

解题思路

  • 从后往前依次遍历字符,通过判断字符是否为空来切分每个单词
  • 两次翻转:先整体翻转,然后再每个单词翻转
  • API法:用split分割字符串后逆序输出

代码实现

public class ReverseSentence {
    public String reverse(String sentence) {
        String str = "";
        StringBuilder result = new StringBuilder();
        // 从后往前扫描,遇到空格就处理一个单词
        for (int i = sentence.length() - 1; i >= 0; i--) {
            if (sentence.charAt(i) != ' ')
                str += sentence.charAt(i);
            else {
                for (int j = str.length() - 1; j >= 0; j--)
                    result.append(str.charAt(j));
                result.append(" ");
                str = "";
            }
        }
        // 再把最后一个单词追加到结果串上
        for (int j = str.length() - 1; j >= 0; j--)
            result.append(str.charAt(j));
        return result.toString();
    }

    /**
     * 用split分割字符串后逆序输出
     */
    public String reverseAPI(String sentence) {
        StringBuilder sb = new StringBuilder();
        String[] words = sentence.split("\\s+");
        for (int i = words.length - 1; i > 0; i--) {
            sb.append(words[i]).append(" ");
        }
        sb.append(words[0]);
        return sb.toString();
    }

    public static void main(String[] args) {
        ReverseSentence obj = new ReverseSentence();
        System.out.println(obj.reverse("I am a boy"));
    }
}

参考资料

算法面试题

相关文章

  • 算法每日一题 - 句子逆序

    题目描述 原题 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am ...

  • 算法(6)句子逆序

    描述将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”

  • 入门算法 - 句子逆序输出

    内容同步于我的博客:https://blog.bigrats.net/archives/basic-alg-sen...

  • 2018-03-16

    碰到的算法并查集逆序对归并排序分治算法

  • 问题:句子逆序

    对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将...

  • HWOJ句子逆序

  • 周写12.21

    28托福黎老师 每日一题 请改写下面的低端句子, 根据意思可以增减内容。12.21Take my cousin f...

  • 每日一题Leetcode算法

    Leetcode 题目 本文将不断更新,主要内容为解决Leetcode中的算法问题,有比较难的题目可能会单独成文档...

  • python 句子的逆序

    对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将...

  • 试题5:句子逆序

    试题描述:将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所...

网友评论

      本文标题:算法每日一题 - 句子逆序

      本文链接:https://www.haomeiwen.com/subject/pfhyzxtx.html