欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言LeetCode500鍵盤行題解示例詳解

 更新時(shí)間:2022年12月30日 10:17:27   作者:劉09k11  
這篇文章主要為大家介紹了Go語(yǔ)言LeetCode500鍵盤行題解示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目描述

原題鏈接 :

500. 鍵盤行 - 力扣(LeetCode) (leetcode-cn.com)

給你一個(gè)字符串?dāng)?shù)組 words ,只返回可以使用在 美式鍵盤 同一行的字母打印出來(lái)的單詞。鍵盤如下圖所示。

美式鍵盤 中:

  • 第一行由字符 "qwertyuiop" 組成。
  • 第二行由字符 "asdfghjkl" 組成。
  • 第三行由字符 "zxcvbnm" 組成。

示例 1:

輸入:words = ["Hello","Alaska","Dad","Peace"]
輸出:["Alaska","Dad"]

示例 2:

輸入:words = ["omk"]
輸出:[]

示例 3:

輸入:words = ["adsdf","sfd"]
輸出:["adsdf","sfd"]

提示:

  • 1 <= words.length <= 20
  • 1 <= words[i].length <= 100
  • words[i] 由英文字母(小寫和大寫字母)組成

思路分析

審?fù)觐}就覺(jué)得這道題應(yīng)該不難做,但是絕對(duì)很麻煩。畢竟看著就是那種判斷來(lái)判斷去的。初步一看判斷數(shù)組中每個(gè)字符串的每個(gè)字符就已經(jīng)是雙層循環(huán)了。。還有細(xì)節(jié)處理,嘖嘖。

這里其實(shí)可以用統(tǒng)一小寫的,但是我直接在給定字符串就大小寫都算上了,其實(shí)我想的是先做出來(lái)如果性能不行再優(yōu)化,但是直接0ms就不優(yōu)化了。

思路就是判斷一個(gè)字符串的第一個(gè)單詞屬于哪一行的,接下來(lái)照著這行判斷,出現(xiàn)這行不存在的直接break。都判斷完了沒(méi)有不是的加到結(jié)果集中。

因?yàn)橐婚_(kāi)始不知道結(jié)果集多長(zhǎng)所以創(chuàng)建的數(shù)組和給定數(shù)組長(zhǎng)度一樣,再遍歷一遍使得結(jié)果集大小正好。

AC 代碼

class Solution {
    public String[] findWords(String[] words) {
        String[] res = new String[words.length];
        String fir = "qwertyuiopQWERTYUIOP";
		String sec = "asdfghjklASDFGHJKL";
		String tir = "zxcvbnmZXCVBNM";
        int k = 0;
        for(int i = 0;i<words.length;i++){
            String temp = "";
            for(int j = 0;j<words[i].length();j++){
                if(fir.indexOf(words[i].charAt(0))!=-1){
                    temp = fir;
                }else if(sec.indexOf(words[i].charAt(0))!=-1){
                    temp = sec;
                }else{
                    temp = tir;
                }
                if(temp.indexOf(words[i].charAt(j))==-1){
                    break;
                }
                if(temp.indexOf(words[i].charAt(j))!=-1&&j==words[i].length()-1){
                    res[k]=words[i];
                    k++;
                }
            }
        }
        String[] result = new String[k];
        for(int p = 0;p<k;p++){
            result[p] = res[p];
        }
        return result;
    }
}

哈希表判斷字符是否出現(xiàn)在某一行中

解題思路

題目很簡(jiǎn)單,依次判斷單詞是不是可以在某一行鍵盤打出來(lái)即可。
我們先建立每行鍵盤的hashmap;表示該行出現(xiàn)過(guò)的字母。

然后判斷目標(biāo)單詞的每個(gè)字母是否只出現(xiàn)在每行鍵盤中,具體做法遍歷每個(gè)字母,都必須包含于某行的hashmap。

為了寫起來(lái)方便:

            bool b1 = true;
            bool b2 = true;
            bool b3 = true;
            for (auto c: word) {
                b1 &= m1[c];
                b2 &= m2[c];
                b3 &= m3[c];
            }            
            if (b1 || b2 || b3) ans.push_back(word);

三行獨(dú)立判斷,有一個(gè)為真,即可在一行內(nèi)打出來(lái)。

代碼

class Solution {
public:
    string one = "qwertyuiopQWERTYUIOP";
    string two = "asdfghjklASDFGHJKL";
    string three = "zxcvbnmZXCVBNM";
    unordered_map<char, int> m1,m2,m3;
    vector<string> findWords(vector<string>& words) {
        for (auto c: one) {
            m1[c]++;
        }
        for (auto c: two) {
            m2[c]++;
        }
        for (auto c: three) {
            m3[c]++;
        }
        vector<string> ans;
        for (auto word: words) {
            bool b1 = true;
            bool b2 = true;
            bool b3 = true;
            for (auto c: word) {
                b1 &= m1[c];
                b2 &= m2[c];
                b3 &= m3[c];
            }
            
            if (b1 || b2 || b3) ans.push_back(word);
        }
        return ans;
    }
};

復(fù)雜度

時(shí)間復(fù)雜度: O(N)

空間復(fù)雜度: O(N)

以上就是Go語(yǔ)言LeetCode500鍵盤行題解示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go語(yǔ)言題解鍵盤行的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang空結(jié)構(gòu)體struct{}用途,你知道嗎

    Golang空結(jié)構(gòu)體struct{}用途,你知道嗎

    這篇文章主要介紹了Golang空結(jié)構(gòu)體struct{}用途,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • go語(yǔ)言實(shí)現(xiàn)http服務(wù)端與客戶端的例子

    go語(yǔ)言實(shí)現(xiàn)http服務(wù)端與客戶端的例子

    今天小編就為大家分享一篇go語(yǔ)言實(shí)現(xiàn)http服務(wù)端與客戶端的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • GO workPool的線程池實(shí)現(xiàn)

    GO workPool的線程池實(shí)現(xiàn)

    本文主要介紹了GO workPool的線程池實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Golang使用Docker進(jìn)行集成測(cè)試的示例詳解

    Golang使用Docker進(jìn)行集成測(cè)試的示例詳解

    集成測(cè)試需要解決外部依賴問(wèn)題,如?MySQL、Redis、網(wǎng)絡(luò)等依賴,本文就來(lái)聊聊?Go?程序如何使用?Docker?來(lái)解決集成測(cè)試中外部依賴問(wèn)題吧
    2023-07-07
  • 學(xué)習(xí)使用Go反射的用法示例

    學(xué)習(xí)使用Go反射的用法示例

    這篇文章主要介紹了學(xué)習(xí)使用Go反射的用法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Go語(yǔ)言將string解析為time.Time時(shí)兩種常見(jiàn)報(bào)錯(cuò)

    Go語(yǔ)言將string解析為time.Time時(shí)兩種常見(jiàn)報(bào)錯(cuò)

    本文主要介紹了Go語(yǔ)言將string解析為time.Time時(shí)兩種常見(jiàn)報(bào)錯(cuò),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 深入理解 Go 語(yǔ)言中的 Context

    深入理解 Go 語(yǔ)言中的 Context

    這篇文章主要介紹了 理解 Go 語(yǔ)言中的 Context,需要的朋友可以參考下
    2020-06-06
  • Golang 的defer執(zhí)行規(guī)則說(shuō)明

    Golang 的defer執(zhí)行規(guī)則說(shuō)明

    這篇文章主要介紹了Golang 的defer執(zhí)行規(guī)則說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • golang如何自定義json序列化應(yīng)用詳解

    golang如何自定義json序列化應(yīng)用詳解

    son格式可以算我們?nèi)粘W畛S玫男蛄谢袷街涣?,下面這篇文章主要給大家介紹了關(guān)于golang如何自定義json序列化應(yīng)用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧
    2018-08-08
  • Golang 空map和未初始化map的注意事項(xiàng)說(shuō)明

    Golang 空map和未初始化map的注意事項(xiàng)說(shuō)明

    這篇文章主要介紹了Golang 空map和未初始化map的注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04

最新評(píng)論