定義字串的左旋轉操作:把前面若干個移動到尾部。
如把字串 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...