領釦LintCode演算法問題答案-1876. 外星人字典(簡單)
領釦LintCode演算法問題答案-1876. 外星人字典(簡單)
1876. 外星人字典(簡單)
描述
某種外星語也使用英文小寫字母,但可能順序 order 不同。字母表的順序(order)是一些小寫字母的排列。 給定一組用外星語書寫的單詞 words,以及其字母表的順序 order,只有當給定的單詞在這種外星語中按字典序排列時,返回 true;否則,返回 false。
- 1 <= words.length <= 100
- 1 <= words[i].length <= 20
- order.length == 26
- 在 words[i] 和 order 中的所有字元都是英文小寫字母。
樣例 1:
輸入:words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
輸出:true
解釋:在該語言的字母表中,'h' 位於 'l' 之前,所以單詞序列是按字典序排列的。
樣例 2:
輸入:words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz"
輸出:false
解釋:在該語言的字母表中,'d' 位於 'l' 之後,那麼 words[0] > words[1],因此單詞序列不是按字典序排列的。
樣例 3:
輸入:words = ["apple","app"], order = "abcdefghijklmnopqrstuvwxyz"
輸出:false
解釋:當前三個字元 "app" 匹配時,第二個字串相對短一些,然後根據詞典編纂規則 "apple" > "app",因為 'l' > '∅',其中 '∅' 是空白字元,定義為比任何其他字元都小(更多資訊)。
題解
public class Solution {
/**
* @param words: the array of string means the list of words
* @param order: a string indicate the order of letters
* @return: return true or false
*/
public boolean isAlienSorted(String[] words, String order) {
//
Map<Character, Integer> orders = new HashMap<>();
for (int i = 0; i < order.length(); i++) {
orders.put(order.charAt(i), i);
}
for (int i = 0; i < words.length - 1; i++) {
String word1 = words[i];
String word2 = words[i + 1];
for (int j = 0; j < Math.min(word1.length(), word2.length()); j++) {
char c1 = word1.charAt(j);
char c2 = word2.charAt(j);
int o1 = orders.get(c1);
int o2 = orders.get(c2);
if (o1 < o2) {
break;
}
if (o1 > o2) {
return false;
}
}
}
return true;
}
}
鳴謝
非常感謝你願意花時間閱讀本文章,本人水平有限,如果有什麼說的不對的地方,請指正。
歡迎各位留言討論,希望小夥伴們都能每天進步一點點。
相關文章
- 領釦LintCode演算法問題答案-1343. 兩字串和演算法字串
- 領釦LintCode演算法問題答案-1878. 旋轉數字演算法
- 領釦LintCode演算法問題答案-988. 硬幣擺放演算法
- 領釦LintCode演算法問題答案-1895. 安排面試城市演算法面試
- 領釦LintCode演算法問題答案-1886. 目標移動演算法
- 領釦LintCode演算法問題答案-1320. 包含重複值演算法
- 領釦LintCode演算法問題答案-1225. 島的周長演算法
- 領釦LintCode演算法問題答案-77. 最長公共子序列演算法
- 領釦LintCode演算法問題答案-1214. 許可證金鑰格式演算法
- 領釦LintCode演算法問題答案-1206. 下一個更大的數 I演算法
- 領釦LintCode演算法問題答案-1354. 楊輝三角形II演算法
- lintcode演算法題 落單的數 JavaScript演算法JavaScript
- php簡單演算法 - 肇事車輛問題PHP演算法
- 樹上問題/簡單演算法 LCA【最近公共祖先】演算法
- 十道簡單演算法題演算法
- 字典樹(字首樹)簡單實現
- tcp 實現簡單http 問題TCPHTTP
- LeetCode簡單演算法題目-JS解法LeetCode演算法JS
- 常見演算法及問題需注意的技巧與簡單實現演算法
- 簡單的素數問題(C++)C++
- Silverlight+WCF 簡單部署問題集
- 使用Swift 字典模型互轉 超級簡單Swift模型
- LeetCode演算法簡單題--JavaScript(每天一道題)LeetCode演算法JavaScript
- 簡單演算法演算法
- 史上最簡單的 《三角形判定》 面試題答案面試題
- 簡單演算法題:leetcode-2 兩數相加演算法LeetCode
- 簡單演算法題:leetcode-1 兩數之和演算法LeetCode
- 簡單的演算法-解決頁面指令碼非同步載入順序問題演算法指令碼非同步
- 簡單排序演算法排序演算法
- Troubleshooting 專題 - 問正確的問題 得到正確的答案
- HBase-Region太多的問題簡單總結
- iOS FTPManager的簡單使用及常見問題iOSFTP
- 簡單瞭解下JMM解決什麼問題
- Centos 系統簡單排查流量異常問題CentOS
- 這道演算法題太太太太太簡單啦演算法
- 雙指標演算法的一個簡單題解指標演算法
- 一道簡單的分配演算法題,求解演算法
- 阿里Jvm必問面試題及答案阿里JVM面試題