判定字元是否唯一的面試題想到

2022-01-12 06:15:17 字數 2112 閱讀 1979

題目出處 力扣(leetcode)

實現乙個演算法,確定乙個字串 s 的所有字元是否全都不同。

示例 1:

輸入: s = "leetcode"

輸出: false

示例 2:

輸入: s = "abc"

輸出: true

限制:0 <= len(s) <= 100

如果你不使用額外的資料結構,會很加分。

就是這麼簡單一道題,居然看到灰常多的解法。雖然題目提示盡量不用額外的資料機構,但實際開發中,內建的資料結構除了記憶體稍微多了那麼一點點,我覺得並沒什麼不妥。但作為面試題來做就按出題者的意圖來做吧。

執行效率2ms 記憶體36.4左右 一行**就搞定

public static boolean isunique(string astr)
執行效率0ms 記憶體36.4左右

public boolean isunique(string astr) 

}return true;

}

執行效率0ms 記憶體36.1左右

public boolean isunique(string astr) 

return hashset.size() == astr.length() ;

}

執行效率0ms 記憶體36.1左右

public boolean isunique(string astr) 

}return true;

}

set去重

一、二大致相同,但第一種方法中astr.tochararray()方法自然是多用了記憶體。而去重三和二比的話在某些情況有不同之處的

執行效率0ms 記憶體36.2

## 當前字元是否在  是否包含在後續的字元中

public boolean isunique(string astr)

high64 |= bitindex;

} else

low64 |= bitindex;}}

return true;

}

這裡還看到如下一段闡述

如果我是面試官,我會希望看到什麼?

可能有點偏題,畢竟這裡主要就是做題的地方。。

如果我是面試官,會考慮主要考察什麼,就我的工作經驗看,大多數主要是招聘工程師的,面試者如果什麼問題都沒有,直接寫個二重迴圈搞定,會首先給個50分,如果能寫點判斷字串是否為null的,60分。

直接上手什麼bitset,什麼位運算的,我會先問他,題目中有沒有交代字串的字元一定是26個英文本母?如果是unicode環境,你是不是要準備2^16/8個位元組的空間?在實際專案中,風險可控,結果可期更重要,絕大多數時候不在乎那點時間和資源。

所以我期望面試者不要急於解答,我希望他先問我問題:

字串的字元範圍,如果我告訴他,26個小寫英文本母,那可能一開頭直接判斷如果字元長度》26, 直接返回false,做到這一點的,80分

如果我告訴他ascii字符集,然後他的**裡有邊界檢查,並且針對不同的範圍有不同的側重點,比如說ascii字符集,那也就是128個可能性,16個位元組的位運算比較好

如果我告訴他是unicode,沒有字元範圍,老老實實排序再判斷是比較符合我對工程師的要求的,因為演算法效能穩定,沒有額外資源要求,一眼看出沒什麼不可預見的風險,100分。

就是說,有些東西,沒想到或者一時沒想到根本不是問題,日常工作中稍微提示一下即可,但是縝密的思維對於程式設計師來說更重要。

一道看似平平無奇的面試題,解法多種多樣。很多時候我們在工作中的時候,在大多數情況下只會寫一種解決方案,甚至你也只會想一種解決方法,也不會去比較哪個更優秀。但如果真正的有這種思考的態度,或許做技術久了,差距就出來了

面試題 01 01 判定字元是否唯一

實現乙個演算法,確定乙個字串 s 的所有字元是否全都不同。此題首先可以問一下是否為ascii字元還是unicode字元。對於ascii字元來說最多就256個字元,因此,如果大於256在false。自己解 bool isunique string astr return true 金典解 bool i...

面試題 01 01 判定字元是否唯一

面試題 01.01.判定字元是否唯一 力扣 leetcode 使用雜湊表就會很簡單,時空複雜度都是o n class solution for const auto c astr return true 可以使用bitset class solution for const auto c astr ...

面試題 01 01 判定字元是否唯一

面試題 01.01.判定字元是否唯一 實現乙個演算法,確定乙個字串 s 的所有字元是否全都不同。示例 1 輸入 s leetcode 輸出 false 示例 2 輸入 s abc 輸出 true 限制 0 len s 100 如果你不使用額外的資料結構,會很加分。使用unordered set容器,...