Tamflexの貯蔵庫

やる気のない備忘録

いろいろなReverse

元ネタ


文字列の反転をどう実装するのか気になったのでまとめてみた

c++

#include <iostream>
#include <string>
#define REP(i,n) for(int i=0;i<n;i++)
using namespace std;
int main()
{
  cin.tie(0);
  ios::sync_with_stdio(false);
  // FROM HERE
  string S; cin >> S;
  int n; cin >> n;
  REP(i,n)
  {
    int l, r; cin >> l >> r; l--;
    reverse(S.begin()+l, S.begin()+r);
  }
  cout << S << endl;
  return 0;
}

python / python3

python

S = raw_input()
N = int(raw_input())
for i in xrange(N):
    l, r = map(int, raw_input().split())
    l -= 1
    s = list(S[l:r])
    s.reverse()
    S = S[:l] + ''.join(s) + S[r:]
print S

python3

s = list(input())
n = int(input())
for i in range(n):
    l, r = map(int, input().split())
    l -= 1
    r -= 1
    while(l < r):
        s[l],s[r] = s[r],s[l]
        r -= 1; l += 1
print("".join(s))