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

原创 2015年07月10日 21:28:09




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);
}
else
{
pEnd++;
}
}
return pData;
}




char* LeftRotateString(char* pStr, int n)
{
if (pStr != NULL)
{
int nLength = static_cast<int>(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;
}





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【剑指Offer学习】【面试题42:翻转单词顺序vs左旋转字符串】

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

剑指offer之面试题42翻转单词顺序VS左旋转字符串

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

剑指offer--面试题42: 翻转单词顺序列 vs 左旋转字符串

翻转单词顺序列 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,...

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

// 题目1:输入一个英文句子,翻转其中的每一个单词 public class Main { public static void main(String[] args) throws Excep...

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

一、翻转单词顺序 首先反转字符串,然后再反转字符串中的每一个子字符串。 public class Solution { public String ReverseSentence(Stri...

剑指offer-面试题42-翻转单词顺序VS左旋转字符串

旋转单词顺序: package case42_1ReverseSentence; import java.util.Stack; /** * 题目1:输入一个英文句子,翻转句子中单词的顺序,但单...

剑指offer面试题[42]-反转单词顺序VS左旋转字符串

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

剑指Offer面试题41和为s的两个数字与和为s的连续正数序列,面试题42翻转单词顺序与左旋转字符串

面试题41:和为s的两个数字,和为s的连续正数序列问题1:输入一个递增排序的数组和一个数字s.在数组中查找两个数使他们的和为s,如果有多对数字的和等于s,输出任意一对即可。 思路:固定一个数字然后遍...

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

这里尽可能的不去用语言本身提供的函数。 将string逆置 def reverse(string): #return string[::-1] reversedStr = '' for i ...

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

题目一(翻转单词顺序):输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串”I am a student.”则输出”student....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)