第一次写东西 格式有点不太会弄,记录一下这次遇到的题,网上写法全部都是空间复杂度O(n)的,记录两种方法限制空间复杂度
1.冒泡排序法
顾名思义像冒泡一样把数字搞到后面去,其中n为字符串长度,s为字符串。空间复杂度O(n2)
for(int i=1;i<n;i++){
for(int j=0;j<n-1;j++){
if((s[j+1]<='z'&&s[j+1]>='a') && s[j]<='9'&&s[j]>='0'){
swap(s[j],s[j+1]);
}
}
}
2.倒序遍历法
自己能力不足,面试没写出来 下来复盘才写出来的 注意两个if判断 其中numa是string的字母个数
int main() {
string s = "ab2773cde12";
int numa = 5;
int n = 11;
int a = 0;
for (int i = n - 1; i >= 0; i--) {
while (s[i] >= 'a' && s[i] <= 'z') {
char tem = s[i];
s.erase(i, 1);
s = tem + s;
a++;
if (a == numa) {
break;
}
}
if (a == numa ) {
break;
}
}
cout << s;
}