344. 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组
s
的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
思路:实现reverse()函数
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
# s.reverse()
left, right = 0, len(s) - 1
while left <= right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
344. 反转字符串
给定一个字符串
s
和一个整数k
,从字符串开头算起,每计数至2k
个字符,就反转这2k
字符中的前k
个字符。
- 如果剩余字符少于
k
个,则将剩余字符全部反转。- 如果剩余字符小于
2k
但大于或等于k
个,则反转前k
个字符,其余字符保持原样
思路:首先写个部分反转的函数partReverse()
专门用来反转部分函数,再按照要求进行部分反转,每次将i
移动2 * k
个单位,再查看剩下部分的个数按照要求跟k
或2k
进行比较
class Solution:
def reverseStr(self, s: str, k: int) -> str:
# s.insert(0, '0')
left, right = 0, 0
i = 0
length = len(s)
if length <= 2:
return s
def partReverse(s, part_head, part_end):
# s[part_head, part_end] = list(resevered(nums[part_head, part_end]))
left, right = part_head, part_end - 1
while left <= right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
return s
while i < length:
remain = length - i
if remain < k:
s = partReverse(list(s), i, length)
if remain >= k and remain < 2 * k:
s = partReverse(list(s), i, i + k)
if remain >= 2 * k:
s = partReverse(list(s), i, i + k)
i = i + 2 * k
s = list(map(lambda x: str(x), s))
s = ''.join(s)
return s
卡码网54. 替换数字(第八期模拟笔试)
给定一个字符串
s
,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number
。 例如,对于输入字符串"a1b2c3"
,函数应该将其转换为"anumberbnumbercnumber"
。
思路:啊
s = list(input())
for i in range(len(s)):
if ord(s[i]) >= 48 and ord(s[i]) <= 57:
s[i] = 'number'
for i in range(len(s)):
print(s[i], end='')