博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——面试题42:翻转单词顺序VS左旋转字符串
阅读量:4087 次
发布时间:2019-05-25

本文共 1395 字,大约阅读时间需要 4 分钟。

void Reverse(char *pBegin, char *pEnd){    if(pBegin == NULL || pEnd == NULL)        return;    while(pBegin < pEnd)    {        char temp = *pBegin;        *pBegin = *pEnd;        *pEnd = temp;        pBegin ++, pEnd --;    }}

char* ReverseSentence(char *pData){    if(pData == NULL)        return NULL;    char *pBegin = pData;    char *pEnd = pData;    while(*pEnd != '\0')        pEnd ++;    pEnd--;    // 翻转整个句子    Reverse(pBegin, pEnd);    // 翻转句子中的每个单词    pBegin = pEnd = pData;    while(*pBegin != '\0')    {        if(*pBegin == ' ')        {            pBegin ++;            pEnd ++;        }        else if(*pEnd == ' ' || *pEnd == '\0')        {            Reverse(pBegin, --pEnd);            pBegin = ++pEnd;        }        else        {            pEnd ++;        }    }    return pData;}

char* LeftRotateString(char* pStr, int n){    if(pStr != NULL)    {        int nLength = static_cast
(strlen(pStr)); if(nLength > 0 && n > 0 && n < nLength) { char* pFirstStart = pStr; char* pFirstEnd = pStr + n - 1; char* pSecondStart = pStr + n; char* pSecondEnd = pStr + nLength - 1; // 翻转字符串的前面n个字符 Reverse(pFirstStart, pFirstEnd); // 翻转字符串的后面部分 Reverse(pSecondStart, pSecondEnd); // 翻转整个字符串 Reverse(pFirstStart, pSecondEnd); } } return pStr;}

你可能感兴趣的文章
Redis数据类型及其使用场景
查看>>
深入理解for update 和 lock in share mode
查看>>
他山之石
查看>>
on duplicate key update语句和insert ignore into语句
查看>>
Kafka使用场景
查看>>
Kafka学习笔记
查看>>
使用kafka传递大文件时的配置
查看>>
Kafka核心知识点
查看>>
一次性替换字符串中的多个字符
查看>>
postgresql笔记
查看>>
AndroidStudio向量图修改插件(VectorPathTweaker)
查看>>
合并 Ijkplayer 和 ffmpeg-metadata-retriever
查看>>
Blender v2.79b 的编译与使用
查看>>
Java Annotation 修改 Field 变量的初始化语句。
查看>>
百度新闻同款左右切换按钮,悬浮变形
查看>>
真正解决 Android-29 无法查看系统源码的问题 (终极方案)
查看>>
安卓webview打印PDF、离线页面的标准做法
查看>>
Sortablejs + css 模仿安卓桌面,实现可拖拽排序的主页图标+文件夹收纳
查看>>
又一 Java 注解(annotation)用例
查看>>
FFmpeg+Python打造命令行工具箱
查看>>