3.23 美团前端&移动端笔试
第1题 回文串删除,**有差不多的原题
#include <iostream> #include <string> using namespace std; int main() { cin.tie(0)->sync_with_stdio(false); int ans = 0; int n; cin >> n; string s; cin >> s; for (int i = 0; i < n; i++) { int j = i; while (j < n && s[j] == s[i]) { j += 1; } ans += j - i - 1; i = j - 1; } cout << ans << endl; }
第2题 置换环
#include <iostream> #include <string> #include <vector> using namespace std; int main() { cin.tie(0)->sync_with_stdio(false); int n; cin >> n; vector<int> a(n), p(n); for (int i = 0; i < n; i++) { cin >> a[i]; a[i]--; p[a[i]] = i; } string s; cin >> s; for (int i = 0; i < n; i++) { if (s[i] == 'W' && a[i] != i) { cout << -1 << "\n"; return 0; } } int ans = 0; vector<int> vis(n); for (int i = 0; i < n; i++) { if (vis[i]) { continue; } int j = i; int circle = 0; while (!vis[j]) { circle += 1; vis[j] = 1; j = a[j]; } ans += circle - 1; } cout << ans << "\n"; return 0; }#2024春招#