zoukankan      html  css  js  c++  java
  • 穷举字符串的一种算法

    前段时间想暴力破解一个KEY,希望穷举所有字符串,于是写出了一段穷举字符串的代码,供大家参考。算法思想参考了10进制数加1的操作,代码如下:

    #define CHAR_HEAD 'a'  // 0x20
    #define CHAR_TAIL 'z'  // 0x7E

    // 字符串加1
    void StrAdd1(char* pStr)
    {
        char szStr[1024] = {0};
        strcpy(szStr, pStr);
        int nP = strlen(szStr)-1;
        if (szStr[nP] == CHAR_TAIL)
        {
            szStr[nP] = CHAR_HEAD;
            int i = 1;
            if (nP-i < 0)
            {
                char *pTmp = new char[nP+3];
                memset(pTmp, 0, nP+3);
                pTmp[0] = CHAR_HEAD;
                strcat(pTmp, szStr);
                strcpy(szStr, pTmp);
                delete[] pTmp;
                strcpy(pStr, szStr);
                return;
            }
            while (szStr[nP-i] == CHAR_TAIL)
            {
                szStr[nP-i] = CHAR_HEAD;
                i++;
                if (nP-i < 0)
                {
                    char *pTmp = new char[nP+3];
                    memset(pTmp, 0, nP+3);
                    pTmp[0] = CHAR_HEAD;
                    strcat(pTmp, szStr);
                    strcpy(szStr, pTmp);
                    delete[] pTmp;
                    strcpy(pStr, szStr);
                    return;
                }
            }
            szStr[nP-i]++;
            strcpy(pStr, szStr);
            return;
        }
        szStr[nP]++;
        strcpy(pStr, szStr);
    }

  • 相关阅读:
    Fizz Buzz 问题
    旋转字符串
    合并排序数组
    尾部的零
    A + B 问题
    CentOS6.x安装RabbitMQ
    MySql游标
    MySql存储过程
    找出n个自然数(1,2,3,……,n)中取r个数的组合
    正则表达式
  • 原文地址:https://www.cnblogs.com/cxun/p/1711939.html
Copyright © 2011-2022 走看看