几道数字算法问题1

1、假如说有一串数字,11位,判断里面是否存在ABBA这样的数字?

bool IsAABB(int* num, int len)
{
    bool b = false;
    int j = 0;

    for (int i = 0; i < len; i++)
    {

        if (num[i] == num[i+1])
        {
            if (++j > 1)
            {

                b = true;
                break;
            }
            if (++j > 0)
            {
                i += 2;
            }


        }


    }
    return b;
}

bool IsABAB(int* num, int len)
{
    bool b = false;
    int j = 0;

    for (int i = 0; i < len; i++)
    {

        if (num[i] == num[i+2])
        {

            if (++j > 1)
            {

                b = true;
                break;
            }
        }


    }
    return b;
}

//连续
bool IsContinuous(int* pCards, int nLen)
{
    if (pCards == NULL || nLen <= 0)
        return false;

    int i = 0;
    int j = 0;

    int preCard = pCards[i];
    for (i = 1; i < nLen; i++)
    {
        int curCard = pCards[i];

        if (preCard == curCard)   //与前一张卡号比较
        {
            if (++j > 1)
            {
                return true;
            }

        }

        preCard = curCard;
    }

    return false;

}

//递增
bool IsUpSeries(int* num, int len)
{
    bool b = false;
    int j = 0;

    for (int i = 0; i < len; i++)
    {

        if (num[i] == num[i+1] - 1)
        {

            if (++j > 1)
            {

                b = true;
                break;
            }
        }


    }
    return b;
}

//递减
bool IsDownSeries(int* num, int len)
{
    bool b = false;
    int j = 0;

    for (int i = 0; i < len; i++)
    {

        if (num[i] == num[i+1] + 1)
        {

            if (++j > 1)
            {

                b = true;
                break;
            }
        }


    }
    return b;
}


bool IsABBA(int* num, int len)
{
    bool b = false;
    int j = 0;

    for (int i = 0; i < len; i++)
    {

        if (num[i] == num[i+3])
        {

            if (num[i+1] == num[i+2])
            {
                b = true;
                break;
            }

        }


    }
    return b;
}


int main()

{

      int  sNum[11] = {13968862123};

     

     bool isGood = IsABBA(sNum, iLen);

     if (isGood)
      {

                 printf("yes");

       }

       else

      {

                 printf("no");

      }

}


 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值