📅  最后修改于: 2023-12-03 14:53:50.889000             🧑  作者: Mango
在这个主题下,我们将探讨一种常见的编程问题:将给定字符串中的所有数字移到字符串的开头部分。我们将通过不同的编程语言来介绍如何解决这个问题,并提供相关的代码示例。
给定一个包含数字和其他字符的字符串,要求编写一个函数将所有数字移动到字符串的开头部分,并保持它们相对于原来的顺序不变。其他字符应该按照它们在原始字符串中的相对顺序留在字符串中。
num_array
和一个空字符串 non_num_string
。num_array
中。non_num_string
中。num_array
和 non_num_string
连接起来,得到最终结果。代码示例:
def move_numbers_to_start(str):
num_array = []
non_num_string = ""
for char in str:
if char.isdigit():
num_array.append(char)
else:
non_num_string += char
return "".join(num_array) + non_num_string
这种解决方案的时间复杂度是 O(n),其中 n 是输入字符串的长度。空间复杂度是 O(n),其中 n 是输入字符串的长度。
left
和 right
,初始时指向字符数组的开头和末尾。left
直到找到数字字符。right
直到找到非数字字符。left
在 right
的左侧,交换两个字符。left
和 right
相遇。代码示例:
def move_numbers_to_start(str):
arr = list(str)
left, right = 0, len(arr) - 1
while left < right:
while not arr[left].isdigit() and left < right:
left += 1
while arr[right].isdigit() and left < right:
right -= 1
if left < right:
arr[left], arr[right] = arr[right], arr[left]
return "".join(arr)
这个解决方案的时间复杂度是 O(n),其中 n 是输入字符串的长度。空间复杂度是 O(n),其中 n 是输入字符串的长度(如果字符数组是可变的,则是 O(1))。
以上是两种不同的解决方案,用于将给定字符串中的所有数字移到字符串的开头部分。你可以根据自己的编程语言和偏好选择其中一种方案来实现。无论选择哪种方案,都应该能够有效地解决这个问题。