• Lintcode--001(比较字符串)


    比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母

     注意事项

    在 A 中出现的 B 字符串里的字符不需要连续或者有序。

    样例

    给出 A = "ABCD" B = "ACD",返回 true

    给出 A = "ABCD" B = "AABC", 返回 false

     标签 

    解题:
     
    class Solution {
    public:
        /**
         * @param A: A string includes Upper Case letters
         * @param B: A string includes Upper Case letter
         * @return:  if string A contains all of the characters in B return true 
         *           else return false
         */
        bool compareStrings(string A, string B) {
            // write your code here
            
            // 先考虑边界条件,字符串长度如果A>B则肯定不满足条件;
            if(A.size()<B.size())
                return false;
            
            int letters[26];//定义数组
            memset(letters,0,sizeof(letters));  // 将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值(也就是全部赋初值为0), 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针
              
            for(int i=0;i<A.size();i++){  
                letters[A[i]-'A']++;  // 都是大写字母,统计每一个字幕出现的次数,最后的结果放在letters这个数组中。
            }  
              
            for(int i=0;i<B.size();i++){  
                if(letters[B[i]-'A']<=0)  //遍历B中每一个字符,如果在B中存在的某个字符,在A中不存在,或者,在A中的数量小于在B中的数量,则返回false
                   return false;  
                else{
                    letters[B[i]-'A']--;
                }
            }
            return true;
        }
    };

    注:

    (1) memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。

             memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。

    (2) 其函数原型为:

        void *memset(void*,int,unsigned);

        其中void*表示地址。

    (3) 例如,下面的代码用数组做参数传递给标准函数memset(),以让其将数组设置成全0:

       

     #include<mem.h>
    
        void main()
    
        {
    
         int ia1[50];
    
         int ia2[500];
    
         memset(iai,0,50*sizeof(int));
    
         memset(ia2,0,500*sizeof(int));
    
         //
    
        }


     

      memset()的第一个实参是数组名,数组名作参数即数组作参数,它仅仅只是一个数组的起始地址而已。

     (4) void *memset(void *s,int c,size_t n)
         总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

          例子:

    #include
    
    void main(){
    char *s="Golden Global View";
    
    clrscr();
    
    memset(s,'G',6);
    printf("%s",s);
    
    getchar();
    return 0;
    } 


    (5) memset() 函数常用于内存空间初始化。如:

           char str[100];
           memset(str,0,100);

    另外:s1.size()函数返回s1中的字符个数;s1.empty()用来确认字符串是否为空;

    top3000:

     

    https://www.cnblogs.com/AllBloggers.aspx

  • 相关阅读:
    2010齐鲁软件大赛题目(十一)虚拟化环境下的多媒体教室设计
    随机数产生
    2010齐鲁软件大赛题目(十三).基于iPhone的移动互联网软件创意设计
    C语言
    操作符是否合法
    2010齐鲁软件大赛题目(十二)基于物联网的智慧校园系统的开发与设计
    2010齐鲁软件设计大赛题目
    2010齐鲁软件大赛题目(十)基于3G手机平台的大学生行动手册的研究与开发
    突击战
    勇者斗恶龙
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/5785496.html
Copyright © 2020-2023  润新知