劍指offer 雙指標 58 I 翻轉單詞順序

2022-08-13 07:15:11 字數 1014 閱讀 2305

時間複雜度:o(n)

空間複雜度:o(1)

class solution 

reverse(s.begin(), s.end());

//去除首尾的空格

int k = 0;

while(k < s.size() && s[k] == ' ') k++;

int j = s.size() - 1;

while(j >= 0 && s[j] == ' ') j--;

return s.substr(k, j - k + 1);

}};

自己實現的版本

class solution 

cout << j << endl;

}j = s.size() - 1;

while(j >= 0 && s[j] == ' ') j--;

return s.substr(0, j + 1);

}void reverse(string& s)

}};

時間複雜度:o(n)

空間複雜度:o(n)

leetcode增加了難度,多了一些特殊異常情況

class solution 

}reverse_str(word);

ans += word;

//逆置整個字串

reverse_str(ans);

return ans;

}void reverse_str(string &word)

};

時間複雜度:o(n)

空間複雜度:o(1)

借助substr函式實現

class solution 

res.erase(res.find_last_not_of(" ") + 1);

return res; //返回結果

}};

58 I 翻轉單詞順序

輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字串 i am a student.則輸出 student.a am i 示例 1 輸入 the sky is blue 輸出 blue is sky the 示例 2 輸入 hello ...

劍指 Offer 58 I 翻轉單詞順序

題目 leetcode上面這道題與書上有些許不同,leetcode還考慮句子首尾和末尾有空格的情況,以及單詞之間存在多個空格。思路1 class solution return res.tostring trim 思路2 先剔除字串首尾的空格,然後利用split 函式,根據空格劃分,返回乙個stri...

劍指 Offer 58 I 翻轉單詞順序

輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字串 i am a student.則輸出 student.a am i 示例 1 輸入 the sky is blue 輸出 blue is sky the 示例 2 輸入 hello ...