917. 仅仅反转字母 URL
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
【解题思路】
思路1:
- 新建一个和字符串等长的数组作为标记数组,如果是字符串就为0,否则为1
- 将字符串反转,按照顺序填充到标记为0的位置
思路2:
- 两个指针一前一后移动,循环start < end,则继续;否则退出
- 循环start < end 并且字符不是字母的,则start ++
- 循环end >= 0 并且字符不是字幕的,则end--
- 如果 start >= end,则break
- 否则就交换,然后start ++,end --
思路3:
- 遍历S, 如果是字母,就放到栈中(list 也行)
- 遍历S, 如果是字母就增加栈顶的元素到ans; 否则就将字符增加到ans
(重新生成字符串,不用原来的的字符串)
思路4:
- 遍历S,如果是字母,从后面遍历是字母的,则ans+S[j];否则直接ans+S[i]
【知识点】
- 字符串值的修改
- replace函数
- 转换成list
- 序列切片
- 字符是不是字母的判断
c.isalpha() - 将list里面的字符串拼成字符串
- ''.join(list)
- 遍历 index和value
enumerate(list,string)