java 151.字符串中的反向字(就地).java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 151.字符串中的反向字(就地).java相关的知识,希望对你有一定的参考价值。

public class Solution {
    public String reverseWords(String s) {
        if(s == null) return null;
        String str = s.trim();
        StringBuilder buffer = new StringBuilder();
        String[] StrArr = s.split(" ");
        for(int i = StrArr.length - 1; i >= 0; i--){
            if(!StrArr[i].trim().equals("")){
                buffer.append(StrArr[i]);
                if(i > 0) buffer.append(" ");
            }
        }
        return buffer.toString().trim();
    }
}
public class Solution {
  
  public String reverseWords(String s) {
    if (s == null) return null;
    
    char[] a = s.toCharArray();
    int n = a.length;
    
    // step 1. reverse the whole string
    reverse(a, 0, n - 1);
    // step 2. reverse each word
    reverseWords(a, n);
    // step 3. clean up spaces
    return cleanSpaces(a, n);
  }
  
  void reverseWords(char[] a, int n) {
    int i = 0, j = 0;
      
    while (i < n) {
      while (i < j || i < n && a[i] == ' ') i++; // skip spaces
      while (j < i || j < n && a[j] != ' ') j++; // skip non spaces
      reverse(a, i, j - 1);                      // reverse the word
    }
  }
  
  // trim leading, trailing and multiple spaces
  String cleanSpaces(char[] a, int n) {
    int i = 0, j = 0;
      
    while (j < n) {
      while (j < n && a[j] == ' ') j++;             // skip spaces
      while (j < n && a[j] != ' ') a[i++] = a[j++]; // keep non spaces
      while (j < n && a[j] == ' ') j++;             // skip spaces
      if (j < n) a[i++] = ' ';                      // keep only one space
    }
  
    return new String(a).substring(0, i);
  }
  
  // reverse a[] from a[i] to a[j]
  private void reverse(char[] a, int i, int j) {
    while (i < j) {
      char t = a[i];
      a[i++] = a[j];
      a[j--] = t;
    }
  }
  
}

以上是关于java 151.字符串中的反向字(就地).java的主要内容,如果未能解决你的问题,请参考以下文章

java 151.字符串中的反向字(就地).java

java 151.字符串中的反向字(就地).java

java 151.字符串中的反向字(就地).java

java 151.字符串中的反向字(就地).java

java 186.字符串II.java中的反向字

java 186.字符串II.java中的反向字