zoukankan      html  css  js  c++  java
  • 151. 翻转字符串里的单词

    给定一个字符串,逐个翻转字符串中的每个单词。

    示例 1:

    输入: "the sky is blue"
    输出: "blue is sky the"
    

    示例 2:

    输入: "  hello world!  "
    输出: "world! hello"
    解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
    

    示例 3:

    输入: "a good   example"
    输出: "example good a"
    解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
    

    说明:

    • 无空格字符构成一个单词。
    • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
    • 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

    1、假如对单词之间的空格不做要求,可以先翻转单词,再翻转整个句子

    class Solution {
       public String reverseWords(String str) {
           //假如str单词之间的空格为1 或者不要求对空格作操作
           String s = str.trim();
           int n = str.length();
           char[] chars = s.toCharArray();
           int i = 0,j = 0;
           while(j <= n){
               if(j == n || chars[j] == ' '){
                   reverse(chars,i,j - 1);
                   i = j + 1;
               }
               j++;
           }
           reverse(chars,0,n - 1);
           return new String(chars);
           
        }
    
        private void reverse(char[] c, int i, int j) {
            while (i < j)
                swap(c, i++, j--);
        }
    
        private void swap(char[] c, int i, int j) {
            char t = c[i];
            c[i] = c[j];
            c[j] = t;
        }
    }

    2、有要求,需要将单词之间的空格减小为1

    class Solution {
       public String reverseWords(String str) {
           String s = str.trim();
           StringBuilder sb = new StringBuilder();
           int i = s.length() - 1;
           int j = i;
           while(i >= 0){
               while(i >= 0 && s.charAt(i) != ' ') i--;
               for(int k = i + 1;k <= j;k++){
                   sb.append(s.charAt(k));
               }
               sb.append(' ');
               while(i >= 0 && s.charAt(i) == ' ' ) i--;
               j = i;
           }
           
           return new String(sb).trim();
           
        }
    }
    一回生,二回熟
  • 相关阅读:
    springboot:集成fastjson(教训)
    记一次 SpringBoot2.x 配置 Fastjson 的坑--修正版
    国密开源代码
    国产加密SM3算法java实现
    国密算法Java代码的标准实现
    sm2,sm3,sm4国密算法的纯c语言版本,使用于任何嵌入式平台
    samtools pileup mpileup Format
    mormot multipart上传文件
    浅谈软件项目实施
    Linux CPU占用率监控工具小结
  • 原文地址:https://www.cnblogs.com/zzytxl/p/12692771.html
Copyright © 2011-2022 走看看