回答編集履歴

1

範囲外アクセスエラーの可能性について追記

2020/05/21 16:52

投稿

ohys
ohys

スコア147

test CHANGED
@@ -3,3 +3,25 @@
3
3
 
4
4
 
5
5
  そのコードだと、例えば`hogemer`という文字列に対して`a == "mer"`がtrueになってしまいます。5文字、6文字、7文字と切り取ってみて判定するようにしてみてください。
6
+
7
+
8
+
9
+ **追記**
10
+
11
+
12
+
13
+ 末尾をn文字切り取る時に、Sがn文字に足りなかったら範囲外アクセスのエラーになります。
14
+
15
+
16
+
17
+ 例えば`S = "ab"`という文字列に対して`S.substr(n-3, 3);`を行おうとすると(私の環境では)`libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: basic_string`というエラーが出ます。
18
+
19
+
20
+
21
+ 文字を切り取る前に、文字列の長さが足りているかも考えなくてはいけないです。
22
+
23
+
24
+
25
+ ↓AC回答です。手詰まりになったら覗いてみてください
26
+
27
+ https://atcoder.jp/contests/abs/submissions/13463383