字串的移位(要求空間為1,使用翻轉的方法)

2022-05-03 07:21:12 字數 456 閱讀 7012

定義字串的左旋轉操作:把前面若干個移動到尾部。

如把字串 abcdef左旋轉 2位得到字串 cdefab。

請實現字串左旋轉的函式要求時間對長度為 n的字串操作複雜度為 o(n),輔助記憶體為 o(1)。

分析:把字串看成有兩段組成的,記位xy。左旋轉相當於要把字串xy 變成yx。

我們先在字串上定義一種翻轉的操作,就是翻轉字串中字元的先後順序。把x 翻轉後

記為xt。顯然有(xt)t=x。

我們首先對x 和y 兩段分別進行翻轉操作,這樣就能得到xtyt。

接著再對xtyt 進行翻轉操作,得到(xtyt)t=(yt)t(xt)t=yx。正好是我們期待的結果。

#includeusing namespace std;

void reverse(char *str,int n)

return 0;

}

字串翻轉 要求空間複雜度為O 1

1.特例 全部翻轉 比如 goodboy 翻轉以後為 yobdoog 思路 就是取得字串的長度length,然後用乙個臨時變數做中轉兩兩交換,就是0和最後乙個交換,1和倒數第二個交換,依次類推 2.通例 把尾部的n個字元移到字串的頭部 思路 也是用到了兩兩交換的方法 比如說 要把尾部的3個字元移到頭...

以單詞為單位反轉字串,要求不申請任何空間

問題描述 存在乙個可讀寫的字串,其中包括若干單詞,單詞間以空格區分,要求以單詞為單位對字串進行反轉。演算法思想 1 利用異或運算可以進行不申請空間進行字元交換 2 利用遞迴的思想 3 使用strchr函式區分單詞 解決方案 1 利用遞迴和異或運算進行字元交換,這一步將完成字串的整體反轉 遞迴進行字元...

字串的使用(1)

1 字串定義 用單引號或者雙引號括起來的任意字串行 2 字串的特點 有序集合型別 支援索引訪問 不可變資料型別,元素不能直接修改 3 str a str 11,22 組成 普通字元,特殊字元 轉義字元 n 4 字串的運算 str index 索引訪問,但不能修改 str start end 切片 o...