ARTS】打卡第八周

每周完成一个ARTS

  • 每周至少做一个 leetcode 的算法题

  • 阅读并点评至少一篇英文技术文章

  • 学习至少一个技术技巧

  • 分享一篇有观点和思考的技术文章。

  • (也就是 Algorithm、Review、Tip、Share 简称ARTS)

    Algorithm

    290. 单词规律

    给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。

    这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。

    思路:

    使用两个map,分别表示字符串与字母、字母与字符串的对应关系

    class Solution {
    public:
    
        vector<string> getvec(string str)
        {
            vector<string> vec;
    
            if (str.empty())
                return vec;
    
            char *szstr = new char[str.size() + 1];
            strcpy(szstr, str.c_str());
    
            char *p = strtok(szstr, " ");
            while(p)
            {
                vec.push_back(p);
                p = strtok(NULL, " ");
            }
            delete szstr;
    
            return vec;
        }
    
        bool wordPattern(string pattern, string str) {
            unordered_map<char, string> map1;
            unordered_map<string, char> map2;
    
            vector<string> vstr = getvec(str);
    
            if (pattern.size() != vstr.size())
                return false;
    
            bool issame = true;
    
            int i = 0;
            for (auto e: pattern)
            {
                if (map1.find(e) == map1.end())
                {
                    map1.insert(pair<char, string>(e, vstr[i]));
                }
                else
                {
                    if (map1[e] != vstr[i])
                    {
                        issame = false;
                        break;
                    }
                }
    
                if (map2.find(vstr[i]) == map2.end())
                {
                    map2.insert(pair<string, char>(vstr[i], e));
                }
                else
                {
                    if (map2[vstr[i]] != e)
                    {
                        issame = false;
                        break;
                    }
                }
                i ++;
            }
    
            return issame;
        }
    };
    

    Review

    une Your Hard Disk with hdparm

    介绍了hdparm这款软件,是linux下重要的诊断、调整硬盘驱动的工具。

    展示硬盘基本信息:

    hdparm -I /dev/sda
    

    速度测试:

    hdparm -t /dev/sda
    

    Tip

    Linux sed命令在匹配行前后插入新行

    a\ 在匹配行的后面追加一行
    b\ 在匹配行的前面追加一行

    Share

    C++内存泄漏和内存碎片的产生及避免策略

posted @ 2019-09-13 11:32  JESSET  阅读(142)  评论(0编辑  收藏  举报