刷题之边界条件注意
发布日期:2021-06-29 18:52:38 浏览次数:2 分类:技术文章

本文共 1401 字,大约阅读时间需要 4 分钟。

文章目录

刷题之边界条件注意

  • 边界条件
  • 其实就是要处理不一般的情形!!

例1

其实就是需要处理特殊情形

  • 这个题目,由于我们要确定一个数出现多少次的时候
    • 必须到这个字符的下一个字符才能确定
  • 但如果出现了5 4 4 1 3 3 3【结束】
    • 我们则不能在3的下一个来判断3出现了几次
    • 所以这是一个特殊情形
    • 可以用if(i==n-1)来判断
#include 
#include
using namespace std;void print(int number, int len){
for (int i = 0; i < len; i++) cout << number << " ";}int main(){
int n; int m; cin >> n; cin >> m; int now; int prev; cin >> prev; int len = 1; if (n == 1) {
cout << prev; return 0; } for (int i = 1; i < n;i++) {
cin >> now; if (prev == now) {
len++; } if (prev != now) {
if (len <= m) print(prev,len); len = 1; prev = now; } if (i == n - 1 && len <= m) print(prev, len); } return 0;}

  • 或者放在循环外处理
#include 
#include
using namespace std;void print(int number, int len){
for (int i = 0; i < len; i++) cout << number << " ";}int main(){
int n; int m; cin >> n; cin >> m; int now; int prev; cin >> prev; int len = 1; if (n == 1) {
cout << prev; return 0; } for (int i = 1; i < n;i++) {
cin >> now; if (prev == now) {
len++; } if (prev != now) {
if (len <= m) print(prev,len); len = 1; prev = now; } } if (len <= m) print(prev, len); return 0;}//4 3 3 3 1 5 5

canci

例子2:yesterday is a doog day

  • 这道题反转的时候需要找到每一个字串的开始和结束
  • prev_i总是指向现在的word的开头
  • i_now在prev_i的基础上向前跑啊
    肯定是i遇到空格就停止,仍然需要考虑特殊情况,最后一个word也是空格吗?不!!最后一个word的下一个是\0

canci

转载地址:https://cyj666.blog.csdn.net/article/details/108156455 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:deque系列
下一篇:0计算机盖伦

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月22日 03时37分09秒