输入一个长度不超过20的数字字符串,调整其顺序使奇数全部都位于偶数前面其他数字顺序不变。
时间: 2023-06-05 19:48:12 浏览: 117
可以使用双指针法,一个指针从左往右扫描奇数,另一个指针从右往左扫描偶数,然后交换两个指针所指的数字,直到两个指针相遇为止。具体实现可以参考以下代码:
```
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
int i = , j = s.length() - 1;
while (i < j) {
while (i < j && (s[i] - '') % 2 == 1) i++;
while (i < j && (s[j] - '') % 2 == ) j--;
if (i < j) swap(s[i], s[j]);
}
cout << s << endl;
return ;
}
```
其中 `(s[i] - '') % 2 == 1` 表示判断第 i 个字符是否为奇数,`(s[j] - '') % 2 == ` 表示判断第 j 个字符是否为偶数。如果是奇数则 i 指针右移,如果是偶数则 j 指针左移,直到找到需要交换的两个数字,然后交换它们。最后输出调整后的字符串即可。
相关问题
输入一个长度不超过10的数字字符串,调整数组使奇数全部都位于偶数前面其他数字顺序不变。
可以使用双指针法,一个指针从数组头开始,一个指针从数组尾开始,分别向中间移动,当左指针指向偶数,右指针指向奇数时,交换两个数的位置,直到左指针和右指针相遇为止。这样就可以把奇数全部移到偶数前面,其他数字顺序不变。
调整数组使奇数全部都位于偶数前面其他数字顺序不变输入一个长度不超过20的数字字符串,调整其顺序使奇数全部都位于偶数前面其他数字顺序不变。
可以使用双指针法来解决这个问题。定义两个指针i和j,分别指向数组的头和尾。当i指向的数为偶数,j指向的数为奇数时,交换它们的位置。直到i和j相遇为止。
以下是Python的实现代码:
```
def reorder_array(nums):
i, j = 0, len(nums) - 1
while i < j:
while i < j and nums[i] % 2 == 1:
i += 1
while i < j and nums[j] % 2 == 0:
j -= 1
if i < j:
nums[i], nums[j] = nums[j], nums[i]
return nums
```
例如,输入数组为[1, 2, 3, 4, 5, 6, 7, 8, 9],输出为[1, 9, 3, 7, 5, 6, 4, 8, 2]。