1 条题解
-
0
练70.3 删除单词后缀
解题思路
对三个候选后缀er、ly、ing,先检查长度是否足够,再比较末段是否相等;首个匹配就删除并停止。
正确性说明
依题目给出的对应关系逐项处理,位置与原输入保持明确对应。每一步完成当前项的全部贡献,结束后得到所有位置或字符的目标结果。
易错点
只删一次后缀,不反复继续删除新形成后缀。
复杂度
时间O(L),空间O(L)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string s; cin >> s; for (string tail : {string("er"), string("ly"), string("ing")}) if (s.size() >= tail.size() && s.compare(s.size() - tail.size(), tail.size(), tail) == 0) { s.resize(s.size() - tail.size()); break; } cout << s << "\n"; return 0; }
- 1