一時興起,看到了一道題目,想寫一寫。題目大體如下:
需求乙個密碼判定程式,要求:①長度不低於8位 ②包含數字、大寫字母、小寫字母、其他字元,至少三種 ③密碼串裡,不包含多個長度大於2的相同子串。例如 awer34er,是可以通過的,因為相同的多個子串是er,長度為2。再例如 awed43234ed4w,是不可以通過的,因為相同的多個子串ed4,長度大於2。
用了好久的python,本來想用python寫,突然發現好像麼有腳踏實地的聯絡過python,使不上勁。還是用c++吧,可以c++也快一年沒寫過了,各種編譯報錯整蒙了都,自從用了python,感覺有點春宵苦短日高起,從此君王不早朝的感覺。
題目分析:
目前的問題,主要集中在,判斷長度大於2的子串。如果暴力破解,複雜度太高,不推薦。計算機裡無非就是兩種,時間和空間。為了保證時間,就犧牲空間唄。
開闢乙個set,用於存放最差情況下的字串①,c++拼接字串蠻麻煩,就存放成數字吧②,空間差不多,閱讀更簡單。
來解釋一下上邊的兩個小圈圈:圈圈1,符合要求的字串長度最小應該是3,所以只考慮3個長度的字串,如果已經達到多個3個長度的字串,他一定不符合要求。
圈圈2,三個長度的字串,乾脆全部轉換成數字儲存,這樣set裡只需要儲存數字,數字重複則出現了相同的字串。
最後,翠花,上酸菜:
#include #include #include #include using namespace std;
int main()
} if(setflags.size() < 3)
cout<
return 0;
}
牛客密碼驗證合格
題目描述密碼要求 1 長度超過8位 2.包括大小寫字母 數字 其他符號,以上4種至少三種 3.不能有相同長度超過2的子串重複 說明 長度超過2的子串 輸入描述一組或多組長度超過2的字串。每組佔一行 輸出描述如果符合要求輸出 ok,否則輸出ng public class adminpassword i...
牛客網 華為機試 020 牛客網
密碼要求 1.長度超過8位 2.包括大小寫字母.數字.其它符號,以上四種至少三種 3.不能有相同長度超2的子串重複 說明 長度超過2的子串 一組或多組長度超過2的子符串。每組佔一行 如果符合要求輸出 ok,否則輸出ng 示例1 021abc9000 021abc9abc1 021abc9000 02...
牛客網 乳酪
題目很簡單,中文題。複製了 乳酪之間距離不用管,只要開個並查集維護就好了,另外需要選好幾個點作為起點幾個點作為終點。o n 2 的建圖。感覺可以平面掃瞄。有空去試試。以下 ac includeusing namespace std const int maxn 1e5 5 define ll lon...