【教3妹學算法】兩個相同字符之間的最長子字符串

插: 前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網(wǎng)站。
堅持不懈,越努力越幸運,大家一起學習鴨~~~

3妹

3妹:2哥,你有沒有看到新聞,長沙電信大樓著火了。
2哥:看到了,幾十層樓被熊熊大火包圍了。
3妹:恩,好在人員有序撤離,沒有人員傷亡。
2哥:嗯,也是不幸中的萬幸了。
3妹:2哥,今天周六了,準備干什么去呀?
2哥:還是呆在家里吧,梅花臺風剛過,出去太熱了。
3妹:我也不想出去,懶的動。
2哥:不出去陪男朋友逛街嗎?
3妹:2哥煩人,明知道我還是單身狗??,不理你了。

講課

題目:

給你一個字符串 s,請你返回 兩個相同字符之間的最長子字符串的長度 ,計算長度時不含這兩個字符。如果不存在這樣的子字符串,返回 -1 。

子字符串 是字符串中的一個連續(xù)字符序列。

示例 1:

輸入:s = "aa"
輸出:0
解釋:最優(yōu)的子字符串是兩個 'a' 之間的空子字符串。
示例 2:

輸入:s = "abca"
輸出:2
解釋:最優(yōu)的子字符串是 "bc" 。
示例 3:

輸入:s = "cbzxy"
輸出:-1
解釋:s 中不存在出現(xiàn)出現(xiàn)兩次的字符,所以返回 -1 。
示例 4:

輸入:s = "cabbac"
輸出:4
解釋:最優(yōu)的子字符串是 "abba" ,其他的非最優(yōu)解包括 "bb" 和 "" 。

提示:

1 <= s.length <= 300
s 只含小寫英文字母

java代碼:

class Solution {
    public int maxLengthBetweenEqualCharacters(String s) {
        int max = -1;
        Map<Character, Integer> map = new HashMap<>();
        char[] ch = s.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if (map.containsKey(ch[i])) {
                max = Math.max(max, i - map.get(ch[i]) - 1);
            } else {
                map.put(ch[i], i);
            }
        }
        
        return max;
    }
}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容