【LeetCode刷题】:仅仅反转字母(双指针+字符串)

给你一个字符串 s ,根据下述规则反转字符串:

所有非英文字母保留在原有位置

所有英文字母(小写或大写)位置反转

返回反转后的 s

示例 1:

输入:s = "ab-cd"

输出:"dc-ba"

示例 2:

输入:s = "a-bC-dEf-ghIj"

输出:"j-Ih-gfE-dCba"

示例 3:

输入:s = "Test1ng-Leet=code-Q!"

输出:"Qedo1ct-eeLg=ntse-T!"

方法:双指针

思路与算法

我们使用 left 指针从左边开始扫描字符串 s,right 指针从右边开始扫描字符串 s如果两个指针都扫描到字母,且 left<right,那么交换 s[left] 和 s[right],然后继续进行扫描;否则表明反转过程结束,返回处理后的字符串

代码

cpp 复制代码
void Swap(char*c1,char*c2)
{
    char tmp=*c1;
    *c1=*c2;
    *c2=tmp;
}

char * reverseOnlyLetters(char * s){
    int SLength=strlen(s);
    int left=0;
    int right =SLength-1;
    while(true)
    {
        while(left<right&&!isalpha(s[left]))
        {
            left++;
        }
        while(right>left&&!isalpha(s[right]))
        {
            right--;
        }
        if(left>=right)
        {
            break;
        }
        Swap(s+left,s+right);
        left++;
        right--;
    }
    return s;
}
相关推荐
Bigan(安)1 小时前
【奶茶Beta专项】【LVGL9.4源码分析】09-core-global全局核心管理
linux·c语言·mcu·arm·unix
前端小白在前进1 小时前
⭐力扣刷题:螺旋矩阵
算法·leetcode·矩阵
老赵聊算法、大模型备案6 小时前
北京市生成式人工智能服务已备案信息公告(2025年12月11日)
人工智能·算法·安全·aigc
CoderYanger7 小时前
C.滑动窗口-求子数组个数-越长越合法——2799. 统计完全子数组的数目
java·c语言·开发语言·数据结构·算法·leetcode·职场和发展
厕所博士7 小时前
红黑树原理前置理解—— 2-3 树
算法·2-3树·红黑树原理理解前置
萌>__<新8 小时前
力扣打卡每日一题————除自身外所有元素的乘积
数据结构·算法
xu_yule8 小时前
算法基础—搜索(2)【记忆化搜索+BFS+01BFS+Floodfill]
数据结构·算法
LinHenrY12278 小时前
初识C语言(自定义结构:结构体)
c语言·开发语言
s09071368 小时前
Xilinx FPGA使用 FIR IP 核做匹配滤波时如何减少DSP使用量
算法·fpga开发·xilinx·ip core·fir滤波
老马啸西风8 小时前
成熟企业级技术平台-10-跳板机 / 堡垒机(Bastion Host)详解
人工智能·深度学习·算法·职场和发展