LintCode - 亂序字符串(普通)

版權(quán)聲明:本文為博主原創(chuàng)文章悴势,未經(jīng)博主允許不得轉(zhuǎn)載蹭劈。

難度:中等
要求:

給出一個(gè)字符串?dāng)?shù)組S酿傍,找到其中所有的亂序字符串(Anagram)。如果一個(gè)字符串是亂序字符串踪区,那么他存在一個(gè)字母集合相同昆烁,但順序不同的字符串也在S中。

注意事項(xiàng)
所有的字符串都只包含小寫字母

樣例

對于字符串?dāng)?shù)組 ["lint","intl","inlt","code"]
返回 ["lint","inlt","intl"]

思路

public class Solution {
    /**
     * @param strs: A list of strings
     * @return: A list of strings
     */
    public List<String> anagrams(String[] strs) {
        if (strs == null || strs.length == 0) {
            return null;
        }

        List<String> reValue = new ArrayList<String>();
        Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();

        for (String s : strs) {
            String key = getKey(s);
            if (map.containsKey(key)) {
                map.get(key).add(s);
            } else {
                ArrayList<String> list = new ArrayList<String>();
                list.add(s);
                map.put(key, list);
            }
        }

        for (ArrayList<String> list : map.values()) {
            if (list.size() > 1) {
                reValue.addAll(list);
            }
        }
        return reValue;
    }
    

    /**
     * 生成key(比如 "and" 和 "dan"缎岗,他們的“ Hash 值 ”就是“a1d1n1"静尼,"array" 和 "yarar" 就是 a2r2y1)
     *
     * @param s
     * @return
     */
    private String getKey(String s) {
        if (s == null || s.length() == 0) {
            return "";
        }
        int[] count = new int['z' - 'a' + 1];
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            count[c - 'a']++;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < count.length; i++) {
            int value = count[i];
            if (value > 0) {
                sb.append(i + 'a').append(value);
            }
        }
        return sb.toString();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市传泊,隨后出現(xiàn)的幾起案子鼠渺,更是在濱河造成了極大的恐慌,老刑警劉巖眷细,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拦盹,死亡現(xiàn)場離奇詭異,居然都是意外死亡薪鹦,警方通過查閱死者的電腦和手機(jī)掌敬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來池磁,“玉大人,你說我怎么就攤上這事楷兽〉叵ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵芯杀,是天一觀的道長端考。 經(jīng)常有香客問我,道長揭厚,這世上最難降的妖魔是什么却特? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮筛圆,結(jié)果婚禮上裂明,老公的妹妹穿的比我還像新娘。我一直安慰自己太援,他們只是感情好闽晦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著提岔,像睡著了一般仙蛉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碱蒙,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天荠瘪,我揣著相機(jī)與錄音,去河邊找鬼。 笑死哀墓,一個(gè)胖子當(dāng)著我的面吹牛趁餐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播麸祷,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼澎怒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了阶牍?” 一聲冷哼從身側(cè)響起喷面,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎走孽,沒想到半個(gè)月后惧辈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡磕瓷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年盒齿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片困食。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡边翁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硕盹,到底是詐尸還是另有隱情符匾,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布瘩例,位于F島的核電站啊胶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏垛贤。R本人自食惡果不足惜焰坪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望聘惦。 院中可真熱鬧某饰,春花似錦、人聲如沸部凑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涂邀。三九已至瘟仿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間比勉,已是汗流浹背劳较。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工驹止, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人观蜗。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓臊恋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親墓捻。 傳聞我的和親對象是個(gè)殘疾皇子抖仅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 今天做了一道中等難度的字符串題目,這道題目花了我兩個(gè)小時(shí)砖第,不過也做了不少的思考撤卢,寫篇日志記錄一下我的思考過程。 首...
    HarperKoo閱讀 4,118評論 7 6
  • 題目 給出一個(gè)字符串?dāng)?shù)組S梧兼,找到其中所有的亂序字符串(Anagram)放吩。如果一個(gè)字符串是亂序字符串,那么他存在一個(gè)...
    六尺帳篷閱讀 551評論 0 1
  • 這是一道中等難度的字符串題目羽杰。本來按照我的想法渡紫,我覺得邏輯上沒有問題,但是出在JAVA上的細(xì)節(jié)問題考赛。雖然惕澎,我的邏輯...
    2a25936eedd9閱讀 340評論 0 0
  • 問題描述如下:給出一個(gè)字符串?dāng)?shù)組S,找到其中所有的亂序字符串(Anagram)颜骤。如果一個(gè)字符串是亂序字符串集灌,那么他...
    愛秋刀魚的貓閱讀 442評論 1 1
  • 一.介紹 1.定位使用的是: CoreLocation 框架 2. ios8 ios9之后的定位的改變 1??...
    晨陽聊電影閱讀 3,865評論 1 12