美文网首页
【剑指Offer 42】翻转单词顺序

【剑指Offer 42】翻转单词顺序

作者: 3e1094b2ef7b | 来源:发表于2017-07-22 22:22 被阅读8次

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字啊的顺序不变。为简单起见,标点符号和普通字母一样处理。

代码如下:

package demo;

/**
 * 翻转单词顺序
 * 
 * @author xiangdonglee
 *
 */
public class Test42_1 {
    /**
     * 将data中start到end之间的字符翻转
     * 
     * @param data
     * @param start
     * @param end
     */
    public static void reverse(char[] data, int start, int end) {
        if (data == null || data.length < 1 || start < 0 || end > data.length || start > end) {
            return;
        }
        while (start < end) {
            char tmp = data[start];
            data[start] = data[end];
            data[end] = tmp;
            start++;
            end--;
        }
    }

    /**
     * 翻转句子中单词的顺序,但单词内字符顺序不变
     * 
     * @param data
     * @return
     */
    public static char[] reverseSentence(char[] data) {
        if (data == null || data.length < 1) {
            return data;
        }
        reverse(data, 0, data.length - 1);
        int start = 0;
        int end = 0;
        while (start < data.length) {
            if (data[start] == ' ') {
                start++;
                end++;
            } else if (end == data.length || data[end] == ' ') {
                reverse(data, start, end - 1);
                end++;
                start = end;
            } else {
                end++;
            }
        }
        return data;
    }

    public static void main(String[] args) {
        test1();
    }

    private static void test1() {
        System.out.println(new String(reverseSentence("I am a student.".toCharArray())));
        System.out.println(new String(reverseSentence("Wonderful".toCharArray())));
        System.out.println(new String(reverseSentence("".toCharArray())));
        System.out.println(new String(reverseSentence("  ".toCharArray())));
    }
}
运行结果

来源:http://blog.csdn.net/derrantcm/article/details/46784471

相关文章

  • 【剑指Offer 42】翻转单词顺序

    题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字啊的顺序不变。为简单起见,标点符号和普通字母一样处理。 代...

  • 剑指offer | 翻转单词顺序

    翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,为简单起见,标点符号和普通字母一样处...

  • 【剑指 offer】翻转单词顺序。

    1、题目描述 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 为简单起见,标点符号和普通字母一样...

  • 每日一练(31):翻转单词顺序

    title: 每日一练(31):翻转单词顺序 categories:[剑指offer] tags:[每日一练] d...

  • [剑指offer] 翻转单词顺序列

    本文首发于我的个人博客:尾尾部落 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句...

  • 剑指Offer--翻转单词顺序

    题目描述:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写...

  • 剑指offer第二版-58.翻转单词顺序

    本系列导航:剑指offer(第二版)java实现导航帖 面试题58:翻转单词顺序 题目要求:输入一个英文句子,翻转...

  • 剑指offer 某-翻转单词顺序列

    此题还算简单,但是总有更好的思路。第一反应是先翻转每个单词,再翻转每个句子。但是觉得翻转函数要自己写太麻烦了。(原...

  • 剑指offer 65- 翻转单词顺序

    输入一个英文句子,单词之间用一个空格隔开,且句首和句尾没有多余空格。 翻转句子中单词的顺序,但单词内字符的顺序不变...

  • 剑指 Offer 58 - I 翻转单词顺序

    题意:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如...

网友评论

      本文标题:【剑指Offer 42】翻转单词顺序

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