該題Reverse String要將輸入字串進行反轉,如下所示,範例1的字串內容為hello,反轉之後的結果為olleh,範例2為Hannah,反轉後為hannaH,此題有許多寫法,而利用two pointers的解法可以得到很好的效能。
Example 1:
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Example 2:
Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
作法解析:宣告兩個索引指標,一個指到頭,一個指到尾,將兩個指標指到的元素進行交換,並將兩個指標索引值向彼此移動一格。
程式碼:
class Solution { public: void reverseString(vector<char>& s) { int i = 0, j = s.size() - 1, tmp; while (i < j) { tmp = s[i]; s[i++] = s[j]; s[j--] = tmp; } } };
1.指到頭的指標(i = 0),指到尾的指標(j = s.size() - 1)
2.如果指到頭的指標比尾的指標小,代表尚有元素未進行交換(while (i < j))。
3.while迴圈內實現將兩指標位置之值進行交換,並且兩個指標向彼此移動一格。
文章標籤
全站熱搜
留言列表