电子商务平台网站开发,如何建立外贸网站,设计公司logo大全,做艺术品的网站有哪些每日一题(LeetCode)----字符串–反转字符串
1.题目#xff08;344. 反转字符串#xff09; 编写一个函数#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间#xff0c;你必须原地修改输入数组、使用 O(1) …每日一题(LeetCode)----字符串–反转字符串
1.题目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]提示 1 s.length 105s[i] 都是 ASCII 码表中的可打印字符
2.解题思路
思路一双指针法
1.创建两个指针分别指向字符串的首元素和尾元素
2.将两根指针所指向的字符进行交换交换有两种写法然后左指针向后移动一位右指针向前移动一位当左指针所指向字符的位置大于右指针所指向字符的位置时结束交换的操作就可以得到反转后的字符串了
3.写出代码
思路一的代码
第一种交换的写法用三个变量来进行交换
class Solution {
public:void reverseString(vectorchar s) {int lengths.size();char* lefts[0];char* rights[length-1];while(rightleft){char temp;temp*left;*left*right;*righttemp;left;right--;}}
};第二种交换的写法用异或进行交换需要先判断两个字符是否相等相等就不交换了
class Solution {
public:void reverseString(vectorchar s) {int lengths.size();char* lefts[0];char* rights[length-1];while(rightleft){if(*left!*right){*left(*left)^(*right);*right(*left)^(*right);*left(*left)^(*right);}left;right--;}}
};