1 条题解
-
0
📝 题目大意
给定一个字符串 ,判断其是否以
san结尾,若是输出Yes,否则输出No。💡 解题思路
- 题目分析:字符串长度 ,数据范围极小,无需考虑效率问题。题目保证长度至少为 ,因此取最后三个字符不会越界。
- 算法推导:直接检查 的倒数第 、、 个字符是否分别为
s、a、n。设len = s.size(),则判断条件为s[len-3] == 's' && s[len-2] == 'a' && s[len-1] == 'n',满足则输出Yes,否则输出No。 - 边界与细节:输入可能包含空格(如带空格的字符串),因此标准代码使用
getline而非cin >>来读取整行,这是一个防 WA 的细节。另外,由于题目保证 ,索引len-3始终合法。
⏱️ 复杂度分析
- 时间复杂度:,主要消耗在读取字符串与获取长度上,判断操作本身为 。
- 空间复杂度:,用于存储输入字符串。
💻 标准代码 (C++)
#include <bits/stdc++.h> using namespace std; string s; int main () { getline(cin, s); // 使用 getline 读取整行,避免空格导致截断 int len = s.size(); // 获取字符串长度 // 检查末尾三个字符是否为 's', 'a', 'n' if (s[len - 3] == 's' && s[len - 2] == 'a' && s[len - 1] == 'n') printf("Yes"); // 以 "san" 结尾 else printf("No"); // 不以 "san" 结尾 return 0; }
- 1
信息
- ID
- 833
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 2
- 已通过
- 2
- 上传者