社区讨论
大佬求调!!!
P1106删数问题参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mlq9cs92
- 此快照首次捕获于
- 2026/02/17 15:04 前天
- 此快照最后确认于
- 2026/02/18 13:32 昨天
才过第一个样例!!!
大佬帮看看问题
求求了
CPP大佬帮看看问题
#include <iostream>
#include <string>
using namespace std;
int findPeakElement(const string& s, const int& n) {
if (n <= 0) return -1;
char maxPeak = 0;
int maxPeakIdx = 0;
for (int i = 0; i < n; i++) {
int cnt = 0;
const bool left = (i == 0);
const bool right = (i == n - 1);
cnt += (!left && s[i - 1] < s[i]);
cnt += (!right && s[i + 1] < s[i]);
if (cnt == 2 - left - right) {
if (maxPeak < s[i]) {
maxPeak = s[i];
maxPeakIdx = i;
}
}
}
return (maxPeakIdx);
}
void strRemoveChar(string& s, const int& tgtIdx) {
s = s.substr(0, tgtIdx) + s.substr(tgtIdx + 1);
}
int main(int argc, char** argv) {
string s;
int k, n;
getline(cin, s);
cin >> k;
n = static_cast<int>(s.size());
while (k--) {
int peakIdx = findPeakElement(s, n);
if (peakIdx >= 0 && peakIdx < n) {
strRemoveChar(s, peakIdx);
n--;
} else {
break;
}
}
while (s.front() == '0' && s.size() > 1) s.erase(s.begin());
cout << s << "\n";
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...