全部内容来自《剑指offer》。

题目一:

  输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字符一样处理。例如输入字符串“I am a student.”,则输出

“student. a am I”。

ANSWER:

void reverse(char *pBegin, char *pEnd)
{
if (pBegin == NULL || pEnd == NULL)
return;
while (pBegin < pEnd)
{
char tmp = *pBegin;
*pBegin = *pEnd;
*pEnd = tmp;
pBegin++;
pEnd--;
}
} char* reverseSentence(char *pDate)
{
if (pDate == NULL)
return NULL;
char *pBegin = pDate;
char *pEnd = pDate;
while (*pEnd != '\0')
pEnd++;
pEnd--;
reverse(pBegin, pEnd); pBegin = pEnd = pDate;
while (*pBegin != '\0')
{
if (*pBegin == ' ')
{
pBegin++;
pEnd++;
}
else if (*pEnd == ' ' || *pEnd == '\0')
{
reverse(pBegin, --pEnd);
pBegin = ++pEnd;
}
else
pEnd++;
}
return pDate;
}

题目二:

  字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串“abcdefg”和数字2,该函数将返回左旋转2位得到的结果“cdefgab”。

ANSWER:

char* leftRotateString(char *pStr, int n)
{
if (pStr != NULL)
{
int nLength = static_cast<int>(strlen(pStr));
if (nLength > && n > && n < nLength)
{
char *pFirstStart = pStr;
char *pFirstEnd = pFirstStart + n - ;
char *pSecondStart = pFirstStart + n;
char *pSecondEnd = pStr + nLength - ;
reverse(pFirstStart, pFirstEnd);
reverse(pSecondStart, pSecondEnd);
reverse(pFirstStart, pSecondEnd);
}
}
return pStr;
}

LeetCode上也有对应的题目

https://leetcode.com/problems/reverse-words-in-a-string/

翻转单词顺序 VS 左旋转字符串的更多相关文章

  1. 【面试题042】翻转单词顺序VS左旋转字符串

    [面试题042]翻转单词顺序VS左旋转字符串 题目一:     输入一个英文句子,反转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.     例如输入字符串“I a ...

  2. 剑指Offer面试题:34.翻转单词顺序VS左旋转字符串

    一.题目一:翻转单词顺序 1.1 题目说明 题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a st ...

  3. 翻转单词顺序VS左旋转字符串

    题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理.例如输入“I am a student.”,则输出“student ...

  4. 面试题42:翻转单词顺序VS左旋转字符串

    题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理. 例如输入字符串“I am a student.",则输出"stud ...

  5. 【剑指offer】面试题42:翻转单词顺序 VS 左旋转字符串

    题目: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abcX ...

  6. 剑指offer42:翻转单词顺序 VS 左旋转字符串(更高效、简便的解法)

    题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a student." ,则输出" ...

  7. 剑指offer——翻转单词顺序VS左旋转字符串

    字符串的交换等,注意判断字符串的是否为NULL,以及判断边界等. #include <iostream> #include <string> using namespace s ...

  8. 反转单词顺序 VS 左旋转字符串

    题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标垫符号和普通字母一样处理.例如输入字符串“I am a student.”,则输出“student. a am I ...

  9. 剑指offer-第六章面试中的各项能力(翻转单词的顺序VS左旋转字符串)

    //题目1:翻转单词顺序例如“Hello world!”翻转后为world! Hello. //思路:首先翻转整个字符串,然后再分别翻转每个单词. //题目2:左旋转字符串,是将字符串的前面几个(n) ...

随机推荐

  1. 搞搞hibernate.current_session_context_class

    搞搞hibernate.current_session_context_class 分类: 排错记录2010-09-01 18:14 4155人阅读 评论(3) 收藏 举报 sessionhibern ...

  2. thinkphp5.0远程执行漏洞

    0x01 漏洞简介 由于ThinkPHP5 框架控制器名 没有进行足够的安全监测,导致在没有开启强制路由的情况下,可以伪装特定的请求可以直接Getshell(可以控制服务器) 0x02 环境搭建 Ph ...

  3. CopyOnWriteArrayList线程安全的集合

    CopyOnWriteArrayList是线程安全的集合.本身就是安全的,同时只能被一个进程所访问. 属于JUC并发编程里面的内容. public static void main(String[] ...

  4. 安装python3.8和python2.7

    在同一台电脑上同时安装Python2和Python3 目前Python的两个版本Python2和Python3同时存在,且这两个版本同时在更新与维护. 到底是选择Python2还是选择Python3, ...

  5. Docker安装Redis并介绍漂亮的可视化客户端进行操作

    1 简介 Redis是使用ANSI C语言开发的基于Key-Value的高性能NoSQL数据库,在解决高并发.高可用等一系列问题中,它扮演着重要的角色.它的优势主要有: 速度快. 持久化. 原子性. ...

  6. L16 LeNet

    **本小节用到的数据下载 1.涉及语句 import d2lzh1981 as d2l 数据1 : d2lzh1981 链接:https://pan.baidu.com/s/1LyaZ84Q4M75G ...

  7. R - C Looooops POJ - 2115 (exgcd)

    题目大意:很好理解,一个for循环语句,从a开始到b结束,步长是c,模数是pow(2,k) 问,最少循环多少次,才能到达b,如果永远都到不了b,输出FOREVER 题解:其实就是求一个线性方程,cx= ...

  8. Equalizing by Division

    The only difference between easy and hard versions is the number of elements in the array. You are g ...

  9. Docker常用命令--ps/attach/run

    ps查看container 若查看正在运行的container docker ps 查看所有的container docker ps -a run启动容器 第一次启动container docker ...

  10. Jmeter--Plugins Manager安装及常用的插件介绍

    jmeter 客户端 内置的插件管理工具Plugins Manager 1.下载地址:https://jmeter-plugins.org/install/Install/ 2.将下载的文件拷贝的你的 ...