Leetcode 917. 仅仅反转字母

917. 仅仅反转字母 URL

给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。

【解题思路】
思路1:

  1. 新建一个和字符串等长的数组作为标记数组,如果是字符串就为0,否则为1
  2. 将字符串反转,按照顺序填充到标记为0的位置

思路2:

  1. 两个指针一前一后移动,循环start < end,则继续;否则退出
  2. 循环start < end 并且字符不是字母的,则start ++
  3. 循环end >= 0 并且字符不是字幕的,则end--
  4. 如果 start >= end,则break
  5. 否则就交换,然后start ++,end --

思路3:

  1. 遍历S, 如果是字母,就放到栈中(list 也行)
  2. 遍历S, 如果是字母就增加栈顶的元素到ans; 否则就将字符增加到ans
    (重新生成字符串,不用原来的的字符串)

思路4:

  1. 遍历S,如果是字母,从后面遍历是字母的,则ans+S[j];否则直接ans+S[i]

【知识点】

  1. 字符串值的修改
    • replace函数
    • 转换成list
    • 序列切片
  2. 字符是不是字母的判断
    c.isalpha()
  3. 将list里面的字符串拼成字符串
    • ''.join(list)
  4. 遍历 index和value
    enumerate(list,string)

你可能感兴趣的:(Leetcode 917. 仅仅反转字母)