c++.实现一个函数,函数将一个字符串中的字符'*'移到串的前部分,其他字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:1**2***567*,处理后为******12567,函数返回值为6。(要求使用尽量少的时间和空间)
时间: 2024-03-30 17:31:18 浏览: 79
C++是一种通用的编程语言,它支面向对象编程泛型编程。它是C语言的扩展,提供了更多的功能和特性。
下面是一个实现将字符串中的字符'*'移到串的前部分,其他字符后移的函数的示例代码:
```cpp
#include <iostream>
#include <string>
int moveStarsToFront(std::string& str) {
int count = 0;
int n = str.length();
int j = n - 1;
for (int i = n - 1; i >= 0; i--) {
if (str[i] == '*') {
std::swap(str[i], str[j]);
j--;
count++;
}
}
return count;
}
int main() {
std::string str = "1**2***567*";
int count = moveStarsToFront(str);
std::cout << "处理后的字符串:" << str << std::endl;
std::cout << "字符'*'的数量:" << count << std::endl;
return 0;
}
```
该函数使用双指针的方法,从字符串末尾开始遍历,如果遇到字符'*',就将其与指针j指向的位置交换,并将j向前移动。最后返回字符'*'的数量。
阅读全文