仅仅反转字母

给定一个字符串s,按规则反转字符串:

1.所有非英文字母保留在原地

2.所有英文字母位置反转

例如:

输入:s = "a-bcd!ef"

输出: s = "f-edc!ba"

思路:两个指针left,right分别指向字符串的头部和尾部,分别检验是否位英文字母,若s[left]不是英文字母,则left++,若s[right]不是英文字母,则right--,分别跳过,若两者都是英文字母,则进行位置交换

char * reverseOnlyLetters(char * s){
    int right=strlen(s)-1;
    int left=0;
    while(left<right){
        if((s[left]<'A')||((s[left]>=91)&&(s[left]<=96))) left++; //s[left]不是英文字母
        else if((s[right]<'A')||((s[right]>=91)&&(s[right]<=96))) right--; //s[right]不是英文字母
        else{ //s[left]和s[right]都是英文字母
        char c=s[left];
        s[left]=s[right];
        s[right]=c;
        left++;
        right--;
        }
    }
    return s;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柒,。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值