本文共 1144 字,大约阅读时间需要 3 分钟。
题目描述
输入一个英文句子,翻转句子中单词的顺序,但是单词内字符顺序不变,为了简单起见,标点符号与普通字母一样处理。 例如:输入“student. a am I”,输出“I am a student.”。代码实现如下:
void Reverse(string &str, int left, int right){ while (left < right) { swap(str[left], str[right]); left++; right--; }}string ReverseSentence(string str){ if (str.empty()) return nullptr; //翻转整个句子 Reverse(str, 0, str.size() - 1); //翻转各个单词 int left = 0; int right = 0; while (right <= str.size()) { if (str[right] == ' ' || right == str.size() && str[right - 1] != ' ') { Reverse(str, left, right - 1); left = right + 1; } right++; } return str;}int main(){ cout<
题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。代码实现如下:
#include#include using namespace std;string LeftRotateString(string str, int n){ if (str.empty() || n <= 0) return 0; string s = str + str; return s.substr(n,str.length());}//测试int main(){ string s = "abcXYZdef"; cout << LeftRotateString(s, 3) << endl; return 0;}
转载地址:http://jxuoi.baihongyu.com/