ReverseWordsInAString

/*

"    ab      c           "转换成:"c ab"

输入的字串可以有leading space和tailing space,输出字串不可有,中间的连续空格转成单一空格

我的解法:

public String reverseWords(String s) {

    String[] s1=s.split(" ");
        ArrayList<String> list=new ArrayList<String>();
        for (String string : s1) {
            if(!string.equals(""))//这里千万不可以写成" "
                list.add(string);
        }
        for (String string : list) {
            System.out.println(string);
        }
        String reString="";
        if(list.size()==0)
            return "";
        for (int i = list.size()-1; i>0; i--) {
            reString+=list.get(i)+" ";
        }        
        reString+=list.get(0);
        return reString;

}

*/

************************************************************

StringBuilder reversed = new StringBuilder();
        int j = s.length();//设定两个指针
        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) == ‘ ‘) {
                j = i;//如果是s的初始连续空格,那么只会执行这段,不会走到append语句
            } else if (i == 0 || s.charAt(i - 1) == ‘ ‘) {
                    if (reversed.length() != 0) {//当reversed的长度为0,不要添加‘ ’,因为是s末尾的连续空格,不加入
                    reversed.append(‘ ‘);
                    }
                    reversed.append(s.substring(i, j));
            }
        }
        return reversed.toString();

时间: 2024-11-10 07:29:08

ReverseWordsInAString的相关文章

Lintcode53 Reverse Words in a String solution 题解

[题目描述] Given an input string, reverse the string word by word. 给定一个字符串,逐个翻转字符串中的每个单词. [题目链接] http://www.lintcode.com/en/problem/reverse-words-in-a-string/ [题目解析] 这道题让我们翻转字符串中的单词,题目中给了我们写特别说明,如果单词之间遇到多个空格,只能返回一个,而且首尾不能有单词,并且对C语言程序员要求空间复杂度为O(1),所以我们只能对

[LeetCode]151.Reverse Words in a String

题目 Given an input string, reverse the string word by word. For example, Given s = "the sky is blue", return "blue is sky the". Update (2015-02-12): For C programmers: Try to solve it in-place in O(1) space. click to show clarification.

翻转单词顺序 VS 左旋转字符串

全部内容来自<剑指offer>. 题目一: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字符一样处理.例如输入字符串“I am a student.”,则输出 “student. a am I”. ANSWER: void reverse(char *pBegin, char *pEnd) { if (pBegin == NULL || pEnd == NULL) return; while (pBegin < pEnd) { char tm

leetcode AC1 感受

在网上第一个AC还是蛮高兴的,之前试了不少练习编程的方法,感觉不怎么适合自己,在OJ上做题的确是一个能够锻炼的方法. 之前一直研究学习的方法,往简单的说是认知.练习,往复杂的说是,保持足够input,input内容足够narrow,难度适合,逐渐+i ,总结并输出. 不过第一次成功很高兴,leetcode不愧是入门级,适合没怎么自己写过代码的人练手. 题目:地址:https://oj.leetcode.com/problems/reverse-words-in-a-string/ Given a

[leetcode]Reverse Words in a String @ Python

原题地址:https://oj.leetcode.com/problems/reverse-words-in-a-string/ 题意: Given an input string, reverse the string word by word. For example,Given s = "the sky is blue",return "blue is sky the". 解题思路:这题很能体现python处理字符串的强大功能. 代码: class Solut

LeetCode: Reverse Words in a String &amp;&amp; Rotate Array

Title: Given an input string, reverse the string word by word. For example,Given s = "the sky is blue",return "blue is sky the". https://leetcode.com/problems/reverse-words-in-a-string/ 思路:先将字符串全部逆转,在将每个单词逆转.具体实现,要注意空格,所以对字符串倒过来处理. cla

[LeetCode]题解(python):151-Reverse Words in a String

题目来源: https://leetcode.com/problems/reverse-words-in-a-string/ 题意分析: 给定一个字符串,里面包括多个单词,将这个字符串的单词翻转,例如"the sky is blue",得到"blue is sky the". 题目思路: 首先获取每个单词,将单词记录到一个数组里面,然后翻转过来就行了.要处理的是前面和后面有空格的情况. 代码(python): class Solution(object): def

151 Reverse Words in a String 翻转字符串里的单词

给定一个字符串,翻转字符串中的每个单词.例如,给定 s = "the sky is blue",返回 "blue is sky the".对于C程序员:请尝试用O(1) 时间复杂度的原地解法.说明:    什么构成一个词?    一系列非空格字符组成一个词.    输入字符串是否可以包含前导或尾随空格?    是.但是,您的反转字符串不应包含前导或尾随空格.    两个单词之间多空格怎么样?    将它们缩小到反转字符串中的单个空格.详见:https://leetc

字符串按单词逆序

leetcode 151. https://leetcode.com/problems/reverse-words-in-a-string/ Example 1: Input: "the sky is blue" Output: "blue is sky the" Example 2: Input: "  hello world!  " Output: "world! hello" Explanation: Your reve