黄色国产视频,男女啪啪18禁无遮挡激烈,久草热8精品视频在线观看,四虎国产精品永久在线下载

            谷歌面試題

            時間:2022-06-28 03:40:41 面試 我要投稿

            谷歌面試題

            實現一個算法來判斷一個字符串中的字符是否唯一(即沒有重復).不能使用額外的數據結構。 (即只使用基本的數據結構)

            谷歌面試題

            解答

            首先,你可以問面試官,構成字符串的字符集有多大?是ASCII字符,還是只是26個字母? 還是有更大的字符集,對于不同的情況,我們可能會有不同的解決方案。

            如果我們假設字符集是ASCII字符,那么我們可以開一個大小為256的bool數組來表征每個字 符的出現。數組初始化為false,遍歷一遍字符串中的字符,當bool數組對應位置的值為真, 表明該字符在之前已經出現過,即可得出該字符串中有重復字符。否則將該位置的bool數組 值置為true。代碼如下:

            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            12

            13

            bool isUnique1(string s)

            {

                bool a[256];

                memset(a, 0, sizeof(a));

                int len = s.length();

                for(int i=0; i < len; ++i)

                {

                    int v = (int)s[i];

                    if(a[v]) return false;

                    a[v] = true;

                }

                return true;

            }

            該算法的時間復雜度為O(n)。我們還可以通過位運算來減少空間的使用量。 用每一位表征相應位置字符的出現。對于ASCII字符,我們需要256位,即一個長度為8的int 數組a即可。這里的關鍵是要把字符對應的數字,映射到正確的位上去。比如字符’b’對應的 代碼是98,那么我們應該將數組中的哪一位置為1呢?用98除以32,得到對應數組a的下標: 3。98對32取模得到相應的位:2。相應代碼如下:

            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            12

            13

            14

            bool isUnique2(string s)

            {

                int a[8];

                memset(a, 0, sizeof(a));

                int len = s.length();

                for(int i=0; i < len; ++i)

                {

                    int v = (int)s[i];

                    int idx = v/32, shift=v%32;

                    if(a[idx] & (1 << shift)) return false;

                    a[idx] |= (1 << shift);

                }

                return true;

            }

            兩個算法的本質其實是一樣的,只不過一個用bool單元來表征字符出現,一個用位來表征。 完整代碼如下:

            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            12

            13

            14

            15

            16

            17

            18

            19

            20

            21

            22

            23

            24

            25

            26

            27

            28

            29

            30

            31

            32

            33

            34

            35

            36

            37

            38

            39

            40

            #include <iostream>

            #include <cstring>

            using namespace std;


            bool isUnique1(string s)

            {

                bool a[256];

                memset(a, 0, sizeof(a));

                int len = s.length();

                for(int i=0; i < len; ++i)

                {

                    int v = (int)s[i];

                    if(a[v]) return false;

                    a[v] = true;

                }

                return true;

            }


            bool isUnique2(string s)

            {

                int a[8];

                memset(a, 0, sizeof(a));

                int len = s.length();

                for(int i=0; i < len; ++i)

                {

                    int v = (int)s[i];

                    int idx = v/32, shift=v%32;

                    if(a[idx] & (1 << shift)) return false;

                    a[idx] |= (1 << shift);

                }

                return true;

            }

            int main()

            {

                string s1 = "i am hawstein.";

                string s2 = "abcdefghijklmnopqrstuvwxyzABCD1234567890";

                cout << isUnique1(s1) << " " << isUnique1(s2) << endl;

                cout << isUnique2(s1) << " " << isUnique2(s2) << endl;

                return 0;

            }

            如果字符集只是a-z(或是A-Z),那就更好辦了,用位運算只需要一個整型數即可。

            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            12

            bool isUnique3(string s)

            {

                int check = 0;

                int len = s.length();

                for(int i=0; i < len; ++i)

                {

                    int v = (int)(s[i]-'a');

                    if(check & (1 << v)) return false;

                    check |= (1 << v);

                }

                return true;

            }

            【JAVA實現】

            1

            2

            3

            4

            5

            6

            7

            8

            9

              public static boolean isUniqueChars(String str) {

                int checker = 0;

                for (int i = 0; i < str.length(); ++i) {

                  int val = str.charAt(i) - a;

                  if ((checker & (1 << val)) > 0) return false;

                  checker |= (1 << val);

                }

                return true;

              }

            1

            2

            3

            4

            5

            6

            7

            8

            9

              public static boolean isUniqueChars2(String str) {

                boolean[] char_set = new boolean[256];

                for (int i = 0; i < str.length(); i++) {

                  int val = str.charAt(i);

                  if (char_set[val]) return false;

                  char_set[val] = true;

                }

                return true;

              }


            【谷歌面試題】相關文章:

            谷歌中國面試題07-13

            谷歌的面試題和招聘流程介紹07-13

            谷歌有趣腦經急轉彎面試題,你會嗎?07-13

            谷歌面試問題...07-13

            谷歌公司待遇是怎樣的?07-11

            谷歌的「親兒子」指什么?07-11

            谷歌面試常見問題07-02

            大家如何看待谷歌這款產品的?07-11

            谷歌的穿越搜索帶來了什么?07-11

            谷歌產品經理眼中的產品經理07-12

            主站蜘蛛池模板: 国产午夜精品无码理论片 | 日本不卡高清一区二区三区| 国产,日韩,欧美| 偷拍青青草| 激情文学国产| 国产粉嫩小泬在线观看泬| 亚洲无av在线中文字幕| 国产真实乱av| 亚洲欧美乱综合图片区| 3d羞羞视频| 国产在线播放精品视频| 国产丰满老熟女重口对白| 黄色综合网| 亚洲系列在线观看| 中文字幕在线网址88第一页| 一区二区三区无码被窝影院| 亚洲精品无码久久久久| 精品欧美视频| 国产夜夜操| 国产喷水1区2区3区咪咪爱AV | 久草网在线| 一区二区三区在线免费播放| 国产精品白浆视频| 成人av毛片无码免费网站| 亚洲中文字幕无码一区二区三区 | 操综合网| 国厂精品114福利电影免费| 国产香蕉一区二区三区在线视频 | 国产精品午夜不卡片在线| 放荡的美妇在线播放| 国产乱码精品一区二区| 午夜激情综合网| 成人免费福利网站| 亚洲无av码在线中文字幕| 久久久亚洲精品成人| 国产精品视频久久久| 天天干在线影院| 中文字幕第一区综合| 青草草在线视频永久免费| 爆乳一区二区三区无码| aaa国产精品|