整数をすばやく読み取るために、私は使用しています
cases = int(next(sys.stdin))
遅いのではなく
cases = int(sys.stdin.readline())
これを使用したすべての問題でタイミングが改善されましたが、この SPOJ 問題と同じ codechef 問題の場合、最初の代わりに 2 番目を使用してより良い結果が得られました。なぜこれが起こったのか分かりません。
この特定の問題に対して、2 番目の方法が 1 番目の方法と比較して突然速くなった理由は何ですか?
SPOJのタイミング結果と codechef のタイミング結果は次のとおりです。
私が使用した2つの完全なコードは
import sys
from itertools import islice
def p():
cases = int(next(sys.stdin))
string = [i[:len(i) -1] for i in islice(sys.stdin, cases)]
for i in string:
ops, ans = [], []
for c in i:
if c in ['+', '-', '*', '/', '^']:
ops.append(c)
elif c == ')':
ans.append(ops.pop())
elif c == '(':
pass
else:
ans.append(c)
print ''.join(ans)
p()
そして2つ目は
import sys
from itertools import islice
def p():
cases = int(sys.stdin.readline())
string = [i[:len(i) -1] for i in islice(sys.stdin, cases)]
for i in string:
ops, ans = [], []
for c in i:
if c in ['+', '-', '*', '/', '^']:
ops.append(c)
elif c == ')':
ans.append(ops.pop())
elif c == '(':
pass
else:
ans.append(c)
print ''.join(ans)
p()