題目描述
組合語言中有一種移位指令叫做迴圈左移(rol),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s=」abcxyzdef」,要求輸出迴圈左移3位後的結果,即「xyzdefabc」。是不是很簡單?ok,搞定它!
思路:利用左移個數對字串長度求餘,看要左移幾位。
class solution {
public:
string leftrotatestring(string str, int n) {
int m = str.size();
if(m == 0)
return str;
int t = n % m;
if(t == 0)
return str;
string ret;
for(int i = t;i < str.size();i++)
ret += str[i];
for(int i = 0;i < t;i++)
ret += str[i];
return ret;
另一種思路:平移多少位。。利用翻轉的思想,先整體翻轉,在n的左右兩部分各自翻轉。
classtranslation{
public:
stringstringtranslation(string a,intn,intlen)
if(len>n)
exit(-1);
reverseword(a,0,len-1);
reverseword(a,len,n-1);
reverseword(a,0,n-1);
returna;
voidreverseword(string &a,intlow,inthigh)
if(low>=high)
return;
char temp;
while(low temp=a[low];
a[low]=a[high];
a[high]=temp;
low++;
high--;
字串左移
字串迴圈左移 20分 輸入乙個字串和乙個非負整數n n,要求將字串迴圈左移nn次。輸入在第1行中給出乙個不超過100個字元長度的 以回車結束的非空字串 第2行給出非負整數nn。在一行中輸出迴圈左移n n次後的字串。hello world 2llo world he參考解答 include inclu...
字串左移
時間限制 1 sec 記憶體限制 2 mb 提交 27 解決 10 標籤提交 統計討論版 給乙個長度等於n的字串,求它左移m位後的字串。每組資料兩行,第一行n m,0第二行給出字串,字串只包含大小寫字母。輸出左移後的結果。6 3netcan 6 2netcan 10 4 helloworld can...
迴圈左移字串
題目 字串的左旋轉操作是把字串前面的若干字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如輸入字串 abcdefg 和陣列2,該函式將返回左旋轉2位得到的結果 cdefgab 分析 通過reverse操作 乙個序列abcdefg,如果向左迴圈移動n位,例如2位,則會程式設計 defg...