【每日一题Day288】LC344反转字符串 | 双指针 位运算

简介: 【每日一题Day288】LC344反转字符串 | 双指针 位运算

反转字符串【LC344】

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

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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/reverse-string

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路[双指针法]

//2021/11/9
class Solution {
    public void reverseString(char[] s) {
        int len = s.length;
        for (int l=0;l<len/2;l++){
            char temp = s[l];
            s[l] = s[len-l-1];
            s[len-1-l] = temp; 
        }
    }
}
  • 复杂度分析
  • 时间复杂度:O(N),其中 N为字符数组的长度。一共执行了 N/2次的交换。
  • 空间复杂度:O(1)。只使用了常数空间来存放若干变量
  • 通过位运算实现swap
class Solution {
    public void reverseString(char[] s) {
        int l = 0;
        int r = s.length - 1;
        while (l < r) {
            s[l] ^= s[r];  //构造 a ^ b 的结果,并放在 a 中
            s[r] ^= s[l];  //将 a ^ b 这一结果再 ^ b ,存入b中,此时 b = a, a = a ^ b
            s[l] ^= s[r];  //a ^ b 的结果再 ^ a ,存入 a 中,此时 b = a, a = b 完成交换
            l++;
            r--;
        }
    }
}
目录
相关文章
C4.
|
6月前
|
存储 程序员 C语言
C语言中如何通过指针引用字符串
C语言中如何通过指针引用字符串
C4.
68 0
|
6月前
【每日一题Day301】LC2337移动片段得到字符串 | 双指针 计分
【每日一题Day301】LC2337移动片段得到字符串 | 双指针 计分
48 0
|
6月前
【每日一题Day150】LC1616分割两个字符串得到回文串 | 双指针+贪心
【每日一题Day150】LC1616分割两个字符串得到回文串 | 双指针+贪心
37 0
|
6月前
【每日一题Day117】LC1234替换子串得到平衡字符串 | 双指针
【每日一题Day117】LC1234替换子串得到平衡字符串 | 双指针
47 0
|
6月前
|
算法 C语言
通过指针引用字符串
通过指针引用字符串
64 1
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
6月前
|
存储 C++
C++程序中的字符串与指针
C++程序中的字符串与指针
62 2
|
6月前
|
C语言
C语言指针与字符串
C语言指针与字符串
37 0
|
6月前
|
存储 机器学习/深度学习 人工智能
【算法基础】基础算法(三)--(双指针算法、位运算、离散化、区间合并)
【算法基础】基础算法(三)--(双指针算法、位运算、离散化、区间合并)
|
C语言
C语言之字符串的连接使用指针和调用函数两种方法
C语言之字符串的连接使用指针和调用函数两种方法
263 0