【剑指Offer】44、反转单词序列
题目描述:
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
解题思路:
本题相对比较简单,但是在面试中经常遇到,流传甚广。其主要思路也简洁明了,主要分为以下两步:
第一步:反转整个序列中所有的字符,这时会发现不但反转了单词的顺序,单词中的字母顺序也被反转,因此需要第二步的调整。
第二步:以空格为分隔,依次反转每个单词,即让每个单词会到原来的正常顺序。
举例:
以字符串“student. a am I”为例:整体反转后变为:"I ma a ,tenduts",然后再反转每个单词,可以得到最后结果:“I am a student.”。
编程实现(Java):
public class Solution {
    //先翻转整个字符串,再逐一翻转每个单词
    public String ReverseSentence(String str) {
        if(str==null)
            return null;
        char[] strArr=str.toCharArray();
        reverseStr(strArr,0,strArr.length-1); //翻转整个字符串
        int begin=0;
        for(int i=0;i<strArr.length;i++){
            if(strArr[i]==' '){
                reverseStr(strArr,begin,i-1);
                begin=i+1;
            }
        }
        reverseStr(strArr,begin,strArr.length-1); //最后一个单词后没有空格
        return new String(strArr);
    }
    public void reverseStr(char[] array,int begin,int end){ //反转字符串,前后指针
        for(;begin<end;begin++,end--){
            char c=array[begin];
            array[begin]=array[end];
            array[end]=c;
        }
    }
}
【剑指Offer】44、反转单词序列的更多相关文章
- [剑指Offer] 44.翻转单词顺序列
		题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ... 
- 剑指Offer 44. 翻转单词顺序列 (字符串)
		题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,"st ... 
- 剑指 Offer 44. 数字序列中某一位的数字 + 找规律 + 数位
		剑指 Offer 44. 数字序列中某一位的数字 Offer_44 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author Wale ... 
- 《剑指offer》翻转单词顺序列
		本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结: 
- 《剑指offer》 反转链表
		本题来自<剑指offer> 反转链表 题目: 输入一个链表,反转链表后,输出新链表的表头. 思路: 需要三个变量,来保存当前节点的,前面节点和反转后的节点. C++ Code: /* st ... 
- 剑指Offer:反转链表【24】
		剑指Offer:反转链表[24] 题目描述 输入一个链表,反转链表后,输出新链表的表头. 解题分析 这道题我才发现我是属于那种真的笨,图都画出来了流程写不出来.看了别人的代码,总觉得自己差一步. 这也 ... 
- 剑指 Offer 24. 反转链表
		剑指 Offer 24. 反转链表 Offer 24 题目描述: 常规解法 本题的解法很常规,没有其他特别的坑,只需要将链表反转即可. package com.walegarrett.offer; / ... 
- 【剑指Offer】反转链表 解题报告(Python)
		[剑指Offer]反转链表 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描 ... 
- 【剑指Offer】翻转单词顺序列 解题报告(Python)
		[剑指Offer]翻转单词顺序列 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ... 
- Go语言实现:【剑指offer】翻转单词顺序列
		该题目来源于牛客网<剑指offer>专题. 例如,"student. a am I",正确的句子应该是"I am a student." Go语言实 ... 
随机推荐
- 微信 创建自定义菜单 向微信发起的post请求
			微信 创建自定义菜单 向微信发起的post请求 Map<String, Object> res = new HashMap<String, Object>(); try { S ... 
- 大学,助你成长or 让你堕落?
			不管是论坛.贴吧.还是博客,都或多或少能够看到诸如对大学教育的反思.抨击之类的文章.至于什么是大学,大学又该怎样度过.大学是助你成长还是让你堕落了?我想这应该是一个见仁见智的问题.作为一个过来人,结合 ... 
- Notepad++支持jQuery、html5、css3
			Notepad++里的代码提示文件是以XML文件存放于目录 ....\Notepad++\plugins\APIs\下的. 将这三个文件:html.xml, css.xml, javascript.x ... 
- nginx安装【linux下安装】
			nginx下载安装 http://nginx.org/en/download.html 点击右键,复制链接http://nginx.org/download/nginx-1.14.2.tar.gz c ... 
- android屏幕适配之精准适配
			(1554068430@qq.com)(android精准适配工具)近期这段时间项目要做适配,在网上方便的方法.后来依据http://blog.csdn.net/jdsjlzx/article/det ... 
- mysql 修改和删除 权限设置
			SET SQL_SAFE_UPDATES = 0; update和delete操作将会顺利执行 SET SQL_SAFE_UPDATES = 1; (安全更新模式(safe update mode)) ... 
- bootstrap异步加载树后样式显示问题
			整个过程: 1.先加载整个页面 2.通过jquery异步请求后台返回数据 3.循环遍历数据,拼接需要的内容 4.把拼接好的数据加载到页面中. 问题: 把拼接好的内容加载到页面后,样式显示不正确.而如果 ... 
- 讲一讲WiFi快连、SmartConfig、SmartConnect
			最近要给公司同事们培训WiFi快连技术,整理了相关资料,也分享在博客这,献给有缘人. 前言 现在的智能硬件产品,以WiFi品类居多,这些WiFi硬件没有人机交互界面,但设备要上网肯定要配置SSID等相 ... 
- 为什么倒排索引不采用zlib这样的字典压缩算法——因为没法直接使用啊
			看了下压缩算法的发展历史,根据倒排索引的数据结构特点,个人认为zstd不适合做倒排索引压缩,举例说明下: 假设有一份文档倒排列表为:[300, 302, 303, 332],对于这组倒排数据,是没法* ... 
- oracle buffer cache的基本原理
			Buffer cache 的原理 一. 1·)当一个服务器进程需要读数据到buffer cache中时,首先必须判断该数据在buffer 中是否存在,如果存在且可用,则获取该数据,根据lru算法在lr ... 
