日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符串移位

發布時間:2024/4/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串移位 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ??把一個字符串左選擇操作:吧字符串前面的的若干字符移動到字符串的尾部,如吧字符串的abcdef左旋轉2位得到字符串cdefab。

? ?思路1.暴力移位發

? ? 把移動m部拆分成移動一步。

? ? void leftshiftone(char* s,int n){

? ? ? ? char t=s[0];

? ? ? ? for(int i=1;i<n;++i)

? ? ? ?{

? ? ? ? ? ? ?s[i-1]=s[i];

? ? ? ?}

? ? ? s[n-1]=t;

? ? ?}

? ? ?移動m位,如下

? ? void leftshift(char* s,int n,int m)

? {

? ? ? ?while(m--)

? ? ? ? {

? ? ? ? ? ? leftshiftone(s,n);

? ? ? ? }

? ?}

2.指針翻轉法

? ? abc def ghi->def abc ghi->def ghi abc

? ?定義兩個指針,p1指向ch[0],p2指向ch[m];

? ?一下過程循環m次,交換p1和p2所指的元素,然后p1++,p2++;

? ? 1.第一步,交換abc和def,abc defghi->def abc ghi

? ? 2.第二步,交換abc和ghi,def abcghi->def ghiabc

? ? 程序設計,先循環m次,交換abc,def,之后判斷p2+m-1.

? ? #include<iostream>

? ? void rotate(string &str,int m)

? ?{

? ? ? if(str.length()==0||m<=0)

? ? ? ? ? ? ?return;

? ? ? ?int n=str.length();

? ? ? ?if(m%n<=0)

? ? ? ? ? ?return ;

? ? ? ? int p1=0,p2=m;

? ? ? ? int k=(n-m)-n%m;

? ? ? ? while(k--)

? ? ? ? {

? ? ? ? ? ? ? swap(str[p1],str[p2])

? ? ? ? ? ? ? p1++;

? ? ? ? ? ? ? p2++;

? ? ? ? ?}

? ? ? ? int r=n-p2;

? ? ? ?while(r--)

? ? ? ?{

? ? ? ? ? ? ?int i=p2;

? ? ? ? ? ? ?while(i>p1)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? swap(str[i],str[i-1]);

? ? ? ? ? ? ? ? ?i--;

? ? ? ? ? ? }

? ? ? ? ? p2++;

? ? ? ? ? p1++;

? ? ? }

思路3,遞歸轉換

? ??

? ? ? ?


? ?}

總結

以上是生活随笔為你收集整理的字符串移位的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。