字串含有字元各不相同

2021-07-26 05:53:55 字數 650 閱讀 8468

前一段,看到乙個問題是乙個字串的所有字元都各不相同。在這裡給出幾種常見的解法。

首先,最容易想到的就是乙個桶排序的演算法。直接給出字串所有可能出現的字元的個數個桶,然後遍歷字串,沒個字元出現一次就給相應的桶內數字加一。最後統計看有沒有桶的數字是超過1的就可以知道結果了。

然後,我們還可以直接遍歷字串,每次遍歷到乙個字元我們就從頭開始遍歷,然後如果發現前面的字元有出現過相同的,那我們直接返回結果可以了。如果沒有出現相同的就接著遍歷下乙個就好了。 

接下來,我們考慮一下我們可以對字串本身進行排序,然後遍歷字串如果連續的字元有相同的我們就直接可以返回結果了。如果沒有我們就同樣知道結果了。

最後,我們考慮一下,這個字元是什麼樣的字元,如果是乙個acsii碼字元的話,那我們知道acsii碼字元一共就256個,如果這個字串有257的長度的話,那麼可以肯定這個字串是不可能字元各不相同的。原因很簡單就是只有256個字元啊!所以對於前面的幾種解法我們都可以直接遍歷n個字元,如果總長度大於256就可以直接返回結果了。同樣對於unicode也是一樣的。可以看一下抽屜原理。

最後 補上乙個正則表達的匹配,我並沒有看懂,有明白的大神可以補充一下解釋!

public boolean checkdifferent(string inistring)

Unity 產生各不相同的隨機數

1.網上很多方法都說用時間種子來解決,但是在極短的時間內,這種方法沒效 random r new random datetime.now.millisecond random counter new random unchecked int datetime.now.ticks ctr random...

oracle查詢多條條件各不相同的資料

object object employeeservice.querybysqluniqueresult select select count from pm overtime where empid employee.getid and overtype 3 and overdate to da...

Unity菜鳥 產生各不相同的隨機數

1.網上很多方法都說用時間種子來解決,但是在極短的時間內,這種方法沒效 random r new random datetime.now.millisecond random counter new random unchecked int datetime.now.ticks ctr random...