本文介绍: 2.将两根指针指向字符进行交换交换有两种写法),然后指针向后移动一位,右指针向前移动一位,当左指针大于指针时,结束交换操作,就可以得到反转后的字符串了。编写一个函数,其作用是将输入字符串反转过来。输入字符串字符数组修改输入数组使用 O(1) 的额外空间解决这一问题。1.创建两个指针分别指向字符串的首元素和尾元素。不要给另外的数组分配额外空间,你必须。

每日一题(LeetCode)—-字符串反转字符串

1.题目344. 反转字符串

2.解题思路

思路一:双指针法

1.创建两个指针分别指向字符串的首元素和尾元素

2.将两根指针指向的字符进行交换(交换有两种写法),然后指针向后移动一位,右指针向前移动一位,当左指针所指向字符的位置大于右指针所指向字符的位置时,结束交换的操作,就可以得到反转后的字符串了

3.写出代码

思路一的代码

第一种交换的写法,用三个变量来进行交换
class Solution {
public:
    void reverseString(vector<char>& s) {
        int length=s.size();
        char* left=&s[0];
        char* right=&s[length-1];
        while(right>left){
            char temp;
            temp=*left;
            *left=*right;
            *right=temp;
            left++;
            right--;
        }
    }
};
第二种交换的写法,用异或进行交换,需要判断个字符是否相等相等就不交换了
class Solution {
public:
    void reverseString(vector<char&gt;&amp; s) {
        int length=s.size();
        char* left=&amp;s[0];
        char* right=&amp;s[length-1];
        while(right&gt;left){
            if(*left!=*right){
            *left=(*left)^(*right);
            *right=(*left)^(*right);
            *left=(*left)^(*right);
            }
            left++;
            right--;
        }
    }
};

原文地址:https://blog.csdn.net/m0_73483024/article/details/134793624

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44310.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注