国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LintCode 8 旋轉字符串

2019-11-08 18:45:58
字體:
來源:轉載
供稿:網友

題目:rotateString


要求:

給定一個字符串和一個偏移量,根據偏移量旋轉字符串(從左向右旋轉)

樣例:

對于字符串 "abcdefg".offset=0 => "abcdefg"offset=1 => "gabcdef"offset=2 => "fgabcde"offset=3 => "efgabcd"

算法要求:

在數組上原地旋轉,使用O(1)的額外空間

解題思路:

用直接定位法,來進行每個字符的定位。可以理解城對號入座,只需要進行n-1次就可以了。此算法的時間復雜度為O(n),進行n-1次交換。

算法如下:

void rotateString(string &str, int offset) { int length = str.length(); int now = 0;//當前last位置所代表字符的初始位置 int last = 0;//考慮到可以能重復循環,用來記錄是否重復了, char tempStr; if (length == 0 || str == NULL) { return; } if (offset >= length) { offset = offset % length; } if (offset == 0) { return; } else { for (int i = 1; i < length ; i++) { tempStr = str[abs((offset + now) % length)]; str[abs((now + offset) % length)] = str[last]; str[last] = tempStr; now = abs((offset + now) % length); if (now == last) {//如果重復操作了,就進行+1操作 last++; now = last; } } } }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平和县| 高州市| 天水市| 克山县| 宝兴县| 嘉禾县| 新昌县| 安塞县| 武城县| 塘沽区| 喀喇| 得荣县| 尼勒克县| 汨罗市| 山阳县| 宜宾市| 浏阳市| 宁津县| 张北县| 甘孜| 通城县| 泰兴市| 武平县| 府谷县| 克拉玛依市| 江口县| 深泽县| 神池县| 永定县| 遂平县| 洱源县| 山丹县| 百色市| 镇远县| 潢川县| 施甸县| 边坝县| 定远县| 华容县| 临武县| 青岛市|