失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > LeetCode20天刷题计划之Day4

LeetCode20天刷题计划之Day4

时间:2024-03-14 15:13:09

相关推荐

LeetCode20天刷题计划之Day4

344. 反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 额外空间解决。

示例 1:

输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]

示例 2:

输入:s = ["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]

注:使用双指针,定义一个头指针left,一个尾指针right,然后分别交换头尾指针。

class Solution {public:void reverseString(vector<char>& s) {int n = s.size(),k=0;vector<char> a;int left=0,right=n-1;while(left<right){k=s[left];s[left]=s[right];s[right]=k;left++;right--;}}};

557. 反转字符串中的单词 III

给定一个字符串s,反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入:s = "Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"

示例 2:

输入:s = "God Ding"输出:"doG gniD"

提示:

1 <= s.length <= 5 * 104s包含可打印的ASCII字符。s不包含任何开头或结尾空格。s至少有一个词。s中的所有单词都用一个空格隔开。

注:本题使用双指针的形式,通过空格的位置和字符长度来判断翻转字符串的位置,一层for循环后找到每一个位置后,然后用一个while循环分别对每一个位置进行反转操作。在while循环中,通过交换收尾元素指针来进行元素交换。

class Solution {public:string reverseWords(string s) {int n = s.size(), j = 0, n1 = 0;char temp;for(int i = 0;i <= n;i++){if(s[i] == ' '|| i == n){n1 = i-1;//记录空格的位置while(j < n1){temp = s[j];s[j] = s[n1];s[n1] = temp;j++;n1--;//字符交换}j = i + 1;//跳到下一个空格后单词}}return s;}};

通过以上的练习,对双指针的形式有了更进一步的了解,明天见~

如果觉得《LeetCode20天刷题计划之Day4》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。