首頁  >  問答  >  主體

java实现求字符串中出现次数最多的字串(单个字符不算)如"abcbcbcabc"的最终答案是bc 共出现了4 次,

如题java实现求字符串中出现次数最多的字串(单个字符不算)如"abcbcbcabc"的最终答案是bc 共出现了4 次,

怪我咯怪我咯2720 天前424

全部回覆(2)我來回復

  • 迷茫

    迷茫2017-04-18 10:17:27

    假設字串S中子字串s出現x次,那麼子字串s的子字串s2,至少也會出現x次,或更多

    又單一字元不算,那麼問題來了,最後出現次數最多的子字串之一,必然是2個字元的子字串

    如果只是想找出任一個符合條件的,那就只需要找一個2字符的子字串

    如果是要把所有出現次數=最大出現次數的子字串全找出來就稍微要複雜一點.

    1.假設字串S長度是N
    2.把字串中相鄰的2個字元組合,變成N-1個子字串,然後統計2字元位元組串,看看哪個出現的最多。
    3.如果沒有哪個2字元字串次數大於1,搜尋結束
    4.如果有多個2字元字串次數相等切大於1,那麼對比這些2字元字串,是否存在第一個字串的結尾等於第二個字串開頭的字串,例如ab 出現3次, bc出現3次, 那麼abc有可能也會出現多次, 如果出現這種情況,就判斷3字元字串的出現次數,如果次數小於2字元字串出現的次數,那麼答案就是2字元字串,否則就可能是3字元字串。
    5.然後向上繼續偵測4,5,6字元字串的情況

    另外,需要明確一下字串出現次數的統計演算法,例如 aaaaaa中子字串aa到底是出現了3次還是5次?

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:17:27

    感覺正則好弄一點。不用正則肯定需要迭代或遞歸解決

    回覆
    0
  • 取消回覆