• 翻转单词顺序列 --剑指offer


    题目描述

    牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
     
    思路: 先整体翻转 在逐个单词翻转
    另外几种思路:1 逐个单词入栈 最后出栈
    2 直接split分开单词 然后从后边拼接
    3 第二个单词拼接到第一个单词前边 第三个在拼接到前边  
     
    public class Solution {
        public  String ReverseSentence(String str) {
            if( str == null||str.trim().equals("")){
                return str;
            }
            char[] chars = str.toCharArray();
            int len=str.length();
            reverse(chars,0,len-1);
            int f=0,l=0;
            while (l < len){
                if(chars[l] == ' '){
                    reverse(chars,f,l-1);
                    l ++;
                    f = l;
                }
                if(chars[f] == ' '){
                    f ++;
                }
                if(chars[f] != ' ' && chars[l] != ' '){
                    l ++;
                }
            }
            reverse(chars,f,l-1);
            return String.valueOf(chars);
        }
    
        private  void reverse(char[] chars, int begin, int end) {
            while(begin < end){
                char tem=chars[begin];
                chars[begin] = chars[end];
                chars[end] = tem;
                begin ++;
                end --;
            }
            return;
        }
        
    }
  • 相关阅读:
    MySQL之SQL优化详解(三)
    MySQL之SQL优化详解(二)
    MySQL之SQL优化详解(一)
    RabbitMQ从入门到精通(三)
    RabbitMQ 从入门到精通(二)
    RabbitMQ 从入门到精通 (一)
    Redis 的主从复制(Master/Slave)
    Redis的事务讲解
    Linux CentOS完全卸载PHP
    Linux(CentOS7)常用命令详解
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12456327.html
Copyright © 2020-2023  润新知