当前位置: 首页 > news >正文

汕头网站推广公司网站排名提升软件

汕头网站推广公司,网站排名提升软件,广州企业展厅设计公司,网站建设中主页指的是题目:字符串的循环右移 ,如字符串"abcdefg"循环右移2个字符变成"fgabcde" 分析:方法(1):一个一个移动(每次将最后一个字符单独保存,将剩下的字符挨着后移一个,再将保存的这个字符放到最前面空出来…

 

题目:字符串的循环右移 ,如字符串"abcdefg"循环右移2个字符变成"fgabcde"

分析:方法(1):一个一个移动(每次将最后一个字符单独保存,将剩下的字符挨着后移一个,再将保存的这个字符放到最前面空出来的位置...)方法(2):方法(1)的优化,由于一个一个移效率较低,我们可以计算出要移动的字符数,然后将要移动的字符拷贝到一个临时空间中,然后将剩下的一次性移到它最终该在的位置,在将临时空间的那部分字符串放到前面腾出来的位置.方法(3):方法(2)的优化,假如字符串长为len,那么右移n个字符,就相当于左移动len-n个字符,那么当n>len2/2时,我们可以通过左移来实现同样的效果,并且比直接右移要效率高一点。方法(4):先分别局部倒置字符串,再整体倒置字符串。如"abcdefg"右移2位,先将"abcde"倒置为"edcba",将"fg"倒置为"gf",再整体倒置为"fgabcde"

方法(1):

void LoopMoveStr1(char* str, int n)
{assert(str);assert(n > 0);int len = strlen(str);if (n > len)//当要移动的个数>字符串长度时,模一下,不做不必要的移动{n = n % len;}for (int i = 0; i < n; i++){char tmp = str[len-1];//保存最后一个元素memmove(str+1, str, sizeof(char)*(len-1));str[0] = tmp;}
}

方法(2):

void LoopMoveStr2(char* str, int n)
{assert(str);assert(n > 0);int len = strlen(str);if (n > len)//当要移动的个数>字符串长度时,模一下,不做不必要的移动{n = n % len;}//准备存放要被移的n个字符的临时空间char* tmp = (char*)malloc(sizeof(char)*n);//将后n个字符拷贝到临时空间memcpy(tmp, str+(len-n), sizeof(char)*n);//一次性移动剩下的字符memmove(str+n, str, sizeof(char)*(len-n));//将临时空间的那部分字符串考回来memcpy(str, tmp,sizeof(char)*n);
}

方法(3):

void LoopMoveStr3(char* str, int n)
{assert(str);assert(n > 0);int len = strlen(str);if (n > len)//当要移动的个数>字符串长度时,模一下,不做不必要的移动{n = n % len;}if (n <= len / 2)//右移(和方法2逻辑一样){//准备存放要被移的n个字符的临时空间char* tmp = (char*)malloc(sizeof(char)*n);//将后n个字符拷贝到临时空间memcpy(tmp, str + (len - n), sizeof(char)*n);//一次性移动剩下的字符memmove(str + n, str, sizeof(char)*(len - n));//将临时空间的那部分字符串考回来memcpy(str, tmp, sizeof(char)*n);}else//右移数超过字符串长度的一半时候,右移n个字符,相当于左移len-n个字符{char* tmp = (char*)malloc(sizeof(char)*(len - n));memcpy(tmp, str,sizeof(char)*(len-n));memmove(str, str+(len-n), sizeof(char)*n);memcpy(str+n, tmp,  sizeof(char)*(len - n));}
}

方法(4):

//先写一个字符串的倒置函数
void reverse_str1(char* str, int begin, int end)
{assert(str);while (begin < end){char tmp = str[begin];str[begin] = str[end];str[end] = tmp;begin++;end--;}
}
void LoopMoveStr4(char* str, int n)
{assert(str);assert(n > 0);int len = strlen(str);if (n > len)//当要移动的个数>字符串长度时,模一下,不做不必要的移动{n = n % len;}//两部分局部倒置reverse_str1(str, 0, len-n-1);reverse_str1(str,len-n, len-1);//最后整体逆置reverse_str1(str, 0, len-1);}
http://www.lbrq.cn/news/2584837.html

相关文章:

  • 贵州建设监理协会网站进不了百度快照怎么删除
  • 搭建网站服务vi设计
  • 南京网站建设有限公司百度客服在线咨询人工服务
  • 网站如何留住客户百度竞价一个月5000够吗
  • 又一个wordpress站点企业网站推广技巧
  • 建立企业网站步骤官网seo
  • 哈尔滨建设网站门户今日小说搜索风云榜
  • 做网站开发没有人带营销软文300字
  • 政府网站建设管理约谈会议聚合搜索引擎
  • 做网站如何防止被坑广告营销顾问
  • 公司业绩怎么发到建设厅网站上石嘴山网站seo
  • 临沂网站制作方案浙江网站建设推广
  • 利用网络媒体营销来做电商网站论文微信引流获客软件
  • 做家教网站赚钱么网络营销策略
  • 网站怎么做付款平台seo外链是什么
  • 做网站平台近期网络舆情事件热点分析
  • 石景山建网站百度营销登录
  • 双11主机 wordpress 2015seo排名
  • 网站制作 flash 修改网络推广优化工具
  • 网站建设做网站怎么做百度推广代理商加盟
  • 黑龙江生产建设兵团各连网站站长号
  • 网站建设 佛山市建立网站的步骤
  • 沉默是金歌词南京seo新浪
  • 学做陶艺作品的网站某个产品营销推广方案
  • 页面设计理念怎么写seo推广优化的方法
  • 黄山网站建设费用网络营销个人感悟小结
  • 常见的网站类型有哪些软文范例大全500
  • 个人备案可以做门户网站吗seo优化排名公司
  • 泰州网站建设案例友情链接是啥意思
  • 仿做网站google学术搜索
  • FastAPI入门:安全性
  • 【从零开始学习Redis】初识Redis
  • C++编译过程与GDB调试段错误和死锁问题
  • 能表示旋转的矩阵是一个流形吗?
  • 更换KR100门禁读头&主机
  • Noob靶场练习