2014-01-26 85 views
3

我有很長的字符串數組。例如:從字符串數組中生成唯一的初始字符串

["Abyssal Specter", "Air Elemental", "Aladdin's Ring", "Ambition's Cost", "Anaba Shaman", "Angel of Mercy", "Angelic Page", "Archivist", "Ardent Militia", "Avatar of Hope", "Aven Cloudchaser","Aven Fisher"] 

現在,這個陣列必須被傳遞給應返回

[["Abyssal Specter","Ab"], ["Air Elemental", "Ai"], ["Aladdin's Ring","Al"], ["Ambition's Cost","Am"], ["Anaba Shaman","Ana"], ["Angel of Mercy","Angel "], ["Angelic Page","Angeli"], ["Archivist","Arc"], ["Ardent Militia","Ard"], ["Avatar of Hope","Ava"], ["Aven Cloudchaser","Aven C"],["Aven Fisher","Aven F"]] 

的方法應返回每個字符串的唯一字母陣列中的方法。

例如,"Abyssal Specter"應返回"Ab",因爲沒有其他字符串以"Ab"開頭。對於"Air Elemental""Ai"也是如此。但"Aven Cloudchaser"應返回"Aven C",因爲有一個字符串"Aven Fisher"。簡而言之,它應該只生成唯一的字符串首字母。

+0

您外殼創建的所有規則,就如何解決矛盾,如果'艾文C'已被使用,磨片下一條規則是什麼? –

回答

4

縮略的標準庫正是這麼做的:

require 'abbrev' 

ar = ["Abyssal Specter", "Air Elemental", "Aladdin's Ring", "Ambition's Cost", "Anaba Shaman", "Angel of Mercy", "Angelic Page", "Archivist", "Ardent Militia", "Avatar of Hope", "Aven Cloudchaser","Aven Fisher"] 
p ar.abbrev.invert.to_a 

# [["Abyssal Specter", "Ab"], ["Air Elemental", "Ai"], ["Aladdin's Ring", "Al"], ["Ambition's Cost", "Am"], ["Anaba Shaman", "Ana"], ["Angel of Mercy", "Angel "], ["Angelic Page", "Angeli"], ["Archivist", "Arc"], ["Ardent Militia", "Ard"], ["Avatar of Hope", "Ava"], ["Aven Cloudchaser", "Aven C"], ["Aven Fisher", "Aven F"]] 
+0

哇,永遠不會知道紅寶石有這樣的庫 – Gagan