zoukankan      html  css  js  c++  java
  • 翻转单词顺序列 --剑指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;
        }
        
    }
  • 相关阅读:
    IP地址和MAC地址,以及arp攻击
    可爱的老婆
    win7 homebasic下,.net2008 连接oracle,提示错误OCIEnvCreate 失败,返回代码为 1,但错误消息文本不可用
    检讨
    数据库索引
    PB调用C#编写的DLL
    用c#开发可供PB调用的COM组件
    关于excel取消科学计数法的问题
    按键码对照
    JSONP学习资料
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12456327.html
Copyright © 2011-2022 走看看