字符串的相关操作
1.字符串的旋转
【字符串的相关操作】将字符串‘abcdef’中头部的‘abc’移到字符串的尾部,变成‘defabc’用蛮力法将头部的字符逐个移动到字符串末尾,需要O(m*n)次移动(m是需要移动的字符的个数,n是字符串的长度)。
比较好的解决方法是三步反转法:将需要移动和不需要移动两个部分的字符串分别反转,然后再对整体字符串进行反转,即可达到目的。
void LeftRotateString( char* s, int n, int m )
{
//如果n>m,就和左移m%n是等价的
m%=n;
ReverseString( s,0,m-1 );
ReverseString( s,n,n-1 );
//整体反转
ReverseString( s,0,n-1 );
}void ReverseString( char* s,int left,int right )
{
while( left
推荐阅读
- 灌篮高手中的球员教练,谁实力第一()
- 35岁后人生真的就完了吗()
- 智能优化算法应用|智能优化算法应用(基于麻雀搜索算法的工程优化案例)
- 智能优化算法应用|智能优化算法应用(基于麻雀搜索算法的TSP问题求解 - 附代码)
- 智能优化算法应用|智能优化算法应用(基于麻雀搜索算法与非完全beta函数的自适应图像增强算法 - 附代码)
- 金融|“暴雷乌龙”后联手大股东紧急“输血"子公司,南京银行的“警报”能解除?
- 轻流SAAS,奔跑在打造团队协作工具的路上
- 杨洋、张艺兴、吴亦凡等加盟今年央视五四晚会,新晋的她也去了
- 我所认识的我自己
- 张国荣的声音,是值得被重复期待的