最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語言題解LeetCode1160拼寫單詞示例詳解

 更新時間:2022年12月30日 09:07:02   作者:劉09k11  
這篇文章主要為大家介紹了go語言題解LeetCode1160拼寫單詞示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目描述

1160. 拼寫單詞 - 力扣(LeetCode)

給你一份『詞匯表』(字符串?dāng)?shù)組) words 和一張『字母表』(字符串) chars。

假如你可以用 chars 中的『字母』(字符)拼寫出 words 中的某個『單詞』(字符串),那么我們就認(rèn)為你掌握了這個單詞。

注意:每次拼寫(指拼寫詞匯表中的一個單詞)時,chars 中的每個字母都只能用一次。

返回詞匯表 words 中你掌握的所有單詞的 長度之和。

示例 1:

輸入:words = ["cat","bt","hat","tree"], chars = "atach"
輸出:6
解釋: 
可以形成字符串 "cat" 和 "hat",所以答案是 3 + 3 = 6。

示例 2:

輸入:words = ["hello","world","leetcode"], chars = "welldonehoneyr"
輸出:10
解釋:
可以形成字符串 "hello" 和 "world",所以答案是 5 + 5 = 10。

提示:

1 <= words.length <= 1000

1 <= words[i].length, chars.length <= 100

所有字符串中都僅包含小寫英文字母

思路分析

先統(tǒng)計chars中各字母(字符)的個數(shù)

然后分別統(tǒng)計words字符串?dāng)?shù)組中的每個字符串的各個字母(字符)的個數(shù)

然后在26個對應(yīng)位置作比較

若當(dāng)前word字符串的對應(yīng)位置字符數(shù)小于等于chars中對應(yīng)位置字符數(shù)

則記錄當(dāng)前word字符串的長度

將其做為總長度的一部分

依次比較余下的word字符串,重復(fù)前面操作,最終得到總長度(答案)

AC 代碼

class Solution {
    public int countCharacters(String[] words, String chars) {
        int n=chars.length();
        int[] arr=new int[26];
        for(int i=0;i<n;i++){
            arr[chars.charAt(i)-'a']++;
        }
        int res=0;
        for(String word:words){
            int[] arr1=new int[26];
            for(int j=0;j<word.length();j++){
                arr1[word.charAt(j)-'a']++;
            }
            for(int i=0;i<26;i++){
                if(arr1[i]<=arr[i]) {
                    if(i==25) res=res+word.length();
                }else break;
            }
        }
        return res;
    }
}

參考

 別人用int[26] 解題思路

友情提示:遇到有提示字符串僅包含小寫(或者大寫)英文字母的題,

都可以試著考慮能不能構(gòu)造長度為26的每個元素分別代表一個字母的數(shù)組,來簡化計算

對于這道題,用數(shù)組c來保存字母表里每個字母出現(xiàn)的次數(shù)
如法炮制,再對詞匯表中的每個詞匯都做一數(shù)組w,比較數(shù)組w與數(shù)組c的對應(yīng)位置

如果w中的都不大于c,就說明該詞可以被拼寫出,長度計入結(jié)果
如果w其中有一個超過了c,則說明不可以被拼寫,直接跳至下一個(這里用到了帶label的continue語法)

代碼

class Solution {
    public int countCharacters(String[] words, String chars) {
        int[] c = new int[26];
        for(char cc : chars.toCharArray()) {
            c[(int)(cc - 'a')] += 1;
        }
        int res = 0;
        a: for(String word : words) {
            int[] w = new int[26];
            for(char ww : word.toCharArray()) {
                w[(int)(ww - 'a')] += 1;
            }
            for(int i=0; i<26; i++) {
                if(w[i] > c[i]) {
                    continue a;
                }
            }
            res += word.length();
        }
        return res;
    }
}

c++幾乎雙百的哈希解法

解題思路

1 構(gòu)建chars的字符到數(shù)量映射表

2. 對于words里的每個單詞也構(gòu)建類似一個表,構(gòu)建后去遍歷比較是否小于等于chars里的數(shù)量,否則失敗

代碼

class Solution {
public:
    int countCharacters(vector<string>& words, string chars) {
        // 記錄累計的長度之和
        int res = 0;
        // 構(gòu)建chars的映射表
        int cnt[26];
        memset(cnt, 0, sizeof(int)*26);
        for (char c : chars)
        {
            ++cnt[c-'a'];
        }
???????        // 遍歷words去構(gòu)建每個映射表,然后比較即可
        int curr[26];
        for (string word : words)
        {
            memset(curr, 0, sizeof(int)*26);
            for (char c : word)
            {
                ++curr[c-'a'];
            }
            bool IsOK= true;
            for (int i = 0; i < 26; ++i)
            {
                if (curr[i] > cnt[i])
                {
                    IsOK = false;
                    break;
                }
            }
            if (IsOK)
            {
                res += word.size();
            }
        }
        return res;
    }
};

以上就是go語言題解LeetCode1160拼寫單詞示例詳解的詳細(xì)內(nèi)容,更多關(guān)于go題解拼寫單詞的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go 數(shù)據(jù)庫查詢與結(jié)構(gòu)體映射的示例詳解

    Go 數(shù)據(jù)庫查詢與結(jié)構(gòu)體映射的示例詳解

    本文主要介紹了如何使用Go語言進(jìn)行數(shù)據(jù)庫查詢并將查詢結(jié)果映射到結(jié)構(gòu)體中,文章詳細(xì)講解了結(jié)構(gòu)體字段導(dǎo)出和db標(biāo)簽的使用方法,并通過示例代碼展示了如何正確地進(jìn)行數(shù)據(jù)庫查詢和結(jié)果映射
    2024-11-11
  • GO語言make和new關(guān)鍵字的區(qū)別

    GO語言make和new關(guān)鍵字的區(qū)別

    本篇文章來介紹一道非常常見的面試題,到底有多常見呢?可能很多面試的開場白就是由此開始的。那就是?new?和?make?這兩個內(nèi)置函數(shù)的區(qū)別,希望對大家有所幫助
    2023-04-04
  • 利用golang和shell計算一個字符串的md5值

    利用golang和shell計算一個字符串的md5值

    這篇文章主要介紹了如何利用golang和shell計算一個字符串的md5值,我們先用shell來計算一下,再去判斷golang計算的md5值是否正確,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下
    2024-03-03
  • golang判斷chan channel是否關(guān)閉的方法

    golang判斷chan channel是否關(guān)閉的方法

    這篇文章主要介紹了golang判斷chan channel是否關(guān)閉的方法,結(jié)合實例形式對比分析了Go語言判斷chan沒有關(guān)閉的后果及關(guān)閉的方法,需要的朋友可以參考下
    2016-07-07
  • golang實現(xiàn)的文件上傳下載小工具

    golang實現(xiàn)的文件上傳下載小工具

    這篇文章主要介紹了golang實現(xiàn)的文件上傳下載小工具,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Mac GoLand打不開(閃退)也不報錯的解決方案

    Mac GoLand打不開(閃退)也不報錯的解決方案

    這篇文章主要介紹了Mac GoLand打不開(閃退)也不報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • go module構(gòu)建項目的實現(xiàn)

    go module構(gòu)建項目的實現(xiàn)

    本文主要介紹了go module構(gòu)建項目的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • golang?gorm開發(fā)架構(gòu)及寫插件示例

    golang?gorm開發(fā)架構(gòu)及寫插件示例

    這篇文章主要為大家介紹了golang?gorm開發(fā)架構(gòu)及寫插件的詳細(xì)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • golang中字符串和數(shù)字轉(zhuǎn)換方法

    golang中字符串和數(shù)字轉(zhuǎn)換方法

    在Golang中,可以使用strconv包中的Itoa()和Atoi()函數(shù)進(jìn)行字符串與數(shù)字之間的轉(zhuǎn)換,Itoa()用于將數(shù)字轉(zhuǎn)換為字符串,Atoi()則用于將字符串轉(zhuǎn)換回數(shù)字,本文介紹golang中字符串和數(shù)字轉(zhuǎn)換方法,感興趣的朋友一起看看吧
    2024-09-09
  • golang通過gorm操作sqlite設(shè)置主鍵自增的步驟

    golang通過gorm操作sqlite設(shè)置主鍵自增的步驟

    這篇文章主要介紹了golang通過gorm操作sqlite設(shè)置主鍵自增的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09

最新評論

正阳县| 花莲县| 通渭县| 永泰县| 晋宁县| 无极县| 图木舒克市| 高密市| 凌海市| 台东县| 巴彦淖尔市| 克什克腾旗| 临安市| 朝阳区| 沧州市| 城固县| 南澳县| 托克托县| 布尔津县| 察雅县| 鄂州市| 杭锦后旗| 宣汉县| 集贤县| 拉孜县| 大安市| 增城市| 伽师县| 兰西县| 南召县| 会泽县| 东乌| 无锡市| 许昌县| 平南县| 武威市| 桓台县| 公安县| 仙桃市| 安化县| 鹤峰县|