如何将字符串中的数字字符移到非数字字符之后?
时间: 2024-06-14 13:04:38 浏览: 9
可以使用以下方法将字符串中的数字字符移到非数字字符之后:
```c
#include <stdio.h>
void fun(char s[]) {
char t;
int i, j;
for(i = 0; s[i] != '\0'; i++) {
for(j = i + 1; s[j] != '\0'; j++) {
if(s[i] >= '0' && s[i] <= '9') {
if(s[j] < '0' || s[j] > '9') {
t = s[i];
s[i] = s[j];
s[j] = t;
}
}
}
}
}
int main() {
char s[80] = "def35adh3kjsdf7";
printf("\nThe original string is: %s\n", s);
fun(s);
printf("\nThe result is: %s\n", s);
return 0;
}
```
执行结果为:defadhkjsdf3537
相关问题
所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序
这个问题可以通过双指针法来解决。我们可以用一个指针(比如 `i`)来遍历整个字符串,另一个指针(比如 `j`)来记录已经处理好的数字字符的最后一个位置。初始时,`i` 和 `j` 都指向字符串的开头。接下来,我们分两种情况讨论:
1. 如果当前字符是数字字符,就将它和 `j` 指向的字符交换,并将 `j` 向后移动一位。这样,所有数字字符就都被移到了它们原有的位置上。
2. 如果当前字符是非数字字符,就不进行任何操作,继续将 `i` 向后移动一位。
当遍历完整个字符串后,所有数字字符就都被移到了它们原有的位置上,而非数字字符的顺序也没有改变。下面是示例代码:
```python
def move_digits(s):
chars = list(s)
i, j = 0, 0
while i < len(chars):
if chars[i].isdigit():
chars[i], chars[j] = chars[j], chars[i]
j += 1
i += 1
return ''.join(chars)
```
例如,对于字符串 `"a1b2c3d4e5f6"`,调用 `move_digits("a1b2c3d4e5f6")` 的返回值是 `"123456abcdef"`。
将字符串中的前导*号全部移到字符串的尾部
可以使用字符串的切片操作和字符串的拼接操作来实现将字符串中的前导*号全部移到字符串的尾部。
具体步骤如下:
1. 定义一个字符串变量,存储需要处理的字符串。
2. 使用while循环,判断字符串的第一个字符是否为*号,如果是,则将该字符从字符串中删除,并将该字符添加到字符串的末尾。
3. 当字符串的第一个字符不是*号时,退出循环。
4. 输出处理后的字符串。
示例代码如下:
```python
s = "***hello***world*"
while s.startswith("*"):
s = s[1:] + s[0]
print(s)
```
输出结果为:hello***world***