determine if a string has all unique characters?

前端 未结 16 1467
长发绾君心
长发绾君心 2020-12-28 08:29

Can anybody tell me how to implement a program to check a string contains all unique chars ?

16条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-28 09:27

    #include 
    
    #define ARR_SIZE 32
    
    unsigned char charFlag[ARR_SIZE];
    
    void initFlag() {
        int i = 0;
    
        for (i = 0; i < ARR_SIZE; i++)
            charFlag[i] = 0;
    
    }
    
    int getFlag(int position) {
        int val = 0;
        int flagMask = 1;
    
        int byteIndex = position / 8;
        int locPos = position % 8;
    
        flagMask = flagMask << locPos;
    //  flagMask = ~flagMask;
    
        val = charFlag[byteIndex] & flagMask;
        val = !(!val);
    //  printf("\nhex: %x\n", val);
        return val;
    
    }
    
    void setFlag(int position) {
        int flagMask = 1;
        int byteIndex = position / 8;
        int locPos = position % 8;
    
        flagMask = flagMask << locPos;
        charFlag[byteIndex] = charFlag[byteIndex] | flagMask;
    
    }
    int isUniq(char *str) {
        int is_uniq = 1;
    
        do {
            char *lStr = str;
            int strLen = 0;
            int i;
    
            if (str == 0)
                break;
    
            while (*lStr != 0) {
                lStr++;
                strLen++;
            }
    
            initFlag();
            lStr = str;
            for (i = 0; i < strLen; i++) {
                if (getFlag(lStr[i]))
                    break;
    
                setFlag(lStr[i]);
            }
    
            if (i != strLen)
                is_uniq = 0;
    
        } while (0);
    
        return is_uniq;
    }
    
    int main() {
    
        char *p = "abcdefe";
        printf("Uniq: %d\n", isUniq(p));
        return 0;
    }
    

提交回复
热议问题