字符串翻转

来源:互联网 发布:淘宝店铺怎么传图片 编辑:程序博客网 时间:2024/06/05 10:18
暴力翻转
#include<iostream>#include<string>using namespace std;void LeftShiftOne(string &s, int n){<span style="white-space:pre"></span>char t = s[0];  //保存第一个字符<span style="white-space:pre"></span>for (int i = 1; i < n; i++)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>s[i - 1] = s[i];<span style="white-space:pre"></span>}<span style="white-space:pre"></span>s[n - 1] = t;}void LeftRotateString(string &s, int n, int m){<span style="white-space:pre"></span>while (m--)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>LeftShiftOne(s, n);<span style="white-space:pre"></span>}}int main(){<span style="white-space:pre"></span>string s = "abcdefg";<span style="white-space:pre"></span>LeftRotateString(s, s.size(), 3);<span style="white-space:pre"></span>cout << s << endl;<span style="white-space:pre"></span>system("pause");<span style="white-space:pre"></span>return 0;}
另一种解法
#include<iostream>#include<string>using namespace std;void reverse(string &s, int from, int to){while (from < to){int t = s[from];s[from++] = s[to];s[to--] = t;}}void shift(string &s, int n, int m){m = m % n;reverse(s,0,m-1);reverse(s, m, n - 1);reverse(s, 0, n - 1);}int main(){string s = "abcdefg";//cout << s << endl;//cout << strlen(s) << endl;shift(s, s.size(), 3);cout << s << endl;system("pause");return 0;}

0 0