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

 

posted @ 2016-08-18 21:45  静悟生慧  阅读(353)  评论(0编辑  收藏  举报