• 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();
           
        }
    }
    一回生,二回熟
  • 相关阅读:
    14、流程分析法
    13、场景法
    SPL之Iterator(迭代器)接口
    MySQL的自动补全和语法高亮工具MyCli
    如何在mmseg3添加词库
    sphinx 配置文件全解析
    配置samba 服务器 共享Linux目录
    Centos7 下coreseek的安装
    机器学习常用的降维方法
    mysql 分类
  • 原文地址:https://www.cnblogs.com/zzytxl/p/12692771.html
Copyright © 2020-2023  润新知