zoukankan      html  css  js  c++  java
  • CCI_Q1.1

    本文参考该作者文章:

    作者:Hawstein
    出处:http://hawstein.com/posts/ctci-solutions-contents.html
    声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。

    一、位运算:

    1.&、与(and)运算:

    相同的位上的两个数都为1,则该位结果为1,否则,该位结果为0.

    应用:与1进行与运算,结果为0,该数字为偶数;结果为1,该数字为奇数。

    2.|、或(or)运算:

    相同位上的两个数,只要有一个为1,该位结果为1.

    3.^、异或(xor)运算:

    相同位上的两个数,如果不相同,则该位结果为1;相同则该位结果为0.

    性质:xor同一个数字两次,结果还是其本身。(eg:((A xor B)xor B)=A)

    应用:swap.(eg:a=a^b;b=a^b;a=a^b;)

    4.<<、左移(shl)运算:

    a<<b:将a的2进制位左移b位。即:a<<b=a*2b

    5.>>、右移(shr)运算:

    a>>b:将a的2进制位右移b位。即:a>>b=a/2b

    二、Q1.1

    Q:实现一个算法来判断一个字符串中的字符(ASCII)是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)

    CODE:

    #include<stdio.h>
    //memset的头文件
    #include<memory.h>
    //C语言中没有bool类型的定义
    #define bool int
    #define true 1
    #define false 0
    bool boolUnique(char const*s)
    {
        bool b[128];
        memset(b,false,sizeof(b));
        int i;
        for(i=0;s[i]!='';i++)
        {
            int v=(int)s[i];
            if(b[v])
                return false;
            b[v]=true;
        }
        return true;
    }
    //32位系统
    bool bitUnique(char const*s)
    {
        int a[4];//128位
        memset(a,0,sizeof(a));
        int i;
        for(i=0;s[i]!='';i++)
        {
            int v=(int)s[i];
            int l=v/32,b=v%32;
            if(a[l]&(1<<b)) return false;
            a[l]|=(1<<b);
        }
        return true;
    }
    int main()
    {
        char s1[]="this  q1!";//空格的ascII为:32
        char s2[]="wildount e";
        printf("s1:%d	%d
    ",boolUnique(s1),bitUnique(s1));
        printf("s2:%d	%d
    ",boolUnique(s2),bitUnique(s2));
        return 0;
    }

    void *memset(void *s,int c,size_t n):将已开辟内存空间 s 的首 n 个字节的值设为值 c。一般用于对字符型变量的初值进行赋值。

  • 相关阅读:
    PHP -----上传文件
    PHP----预定义数组
    PHP-------- 会话控制
    PHP------XML
    PHP----练习-----三级联动
    PHP-------ajax返回值 返回JSON 数据
    PHP----练习----光标离开文本框时变色
    使用ansible安装配置zabbix客户端
    svn+apache安装配置
    rsync+lsyncd实现实时同步
  • 原文地址:https://www.cnblogs.com/jhooon/p/3513540.html
Copyright © 2011-2022 走看看