fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n;
  6. cin >> n;
  7. string boards;
  8. cin >> boards;
  9. char newBoard;
  10. cin >> newBoard;
  11.  
  12. int pos = -1;
  13. for (int i = 0; i < n; i++) {
  14. char cur = boards[i];
  15. char nxt = boards[(i + 1) % n];
  16. // 插入在 i 和 i+1 之间
  17. if (cur <= newBoard && newBoard <= nxt) {
  18. pos = i + 1;
  19. break; // 找到第一个合法位置,最小下标
  20. }
  21. }
  22.  
  23. // 如果没找到合适位置(比如比所有都小或大),插入到合适循环点
  24. if (pos == -1) {
  25. for (int i = 0; i < n; i++) {
  26. char cur = boards[i];
  27. char nxt = boards[(i + 1) % n];
  28. if (cur > nxt) { // 循环断点
  29. if (newBoard >= cur || newBoard <= nxt) {
  30. pos = i + 1;
  31. break;
  32. }
  33. }
  34. }
  35. }
  36.  
  37. // 默认插在开头
  38. if (pos == -1) pos = 0;
  39.  
  40. boards.insert(pos, 1, newBoard);
  41. cout << boards << endl;
  42.  
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0.01s 5284KB
stdin
4
1231
1
stdout
11231