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. Clarification:
- What constitutes a word?A sequence of non-space characters constitutes a word.
- Could the input string contain leading or trailing spaces?Yes. However, your reversed string should not contain leading or trailing spaces.
- How about multiple spaces between two words?Reduce them to a single space in the reversed string.
用栈即可解决,注意前导,尾随空格以及多个空格的问题。用正则表达式匹配多个空格然后用一个空格替换。String的split(“ ”)只能识别一个空格,之后的空格会按照字符串保存。
public class Solution { public String reverseWords(String s) { s=s.trim(); s=s.replaceAll("[\\s]+"," "); String str[]=s.split(" "); Stacksta=new Stack (); String ans=""; for(String c:str){ sta.push(c); } while(!sta.isEmpty()){ ans=ans+sta.pop()+" "; } return ans.trim(); }}
public class StringAPIDemo08{ public static void main(String args[]){ String str1 = "hello world" ; // 定义字符串,3个空格 //str1=str1.replaceAll("[\\s]+", " "); String s[] = str1.split(" ") ; // 按空格进行字符串的拆分 System.out.println(s.length) ; //s的长度为4,空格包含在了字符串里面。 for(int i=0;i