public class Solution {
public bool IsAlienSorted(string[] words, string order) {
var orderMap = new int[order.Length];
for (int i = 0; i < order.Length; i++)
orderMap[order[i] - 'a'] = i;
bool ans = true;
Array.Sort(words, (a, b) =>
{
int i = 0;
while (i < a.Length && i < b.Length)
{
var diff = orderMap[a[i]-'a'] - orderMap[b[i]-'a'];
if (diff != 0)
{
if (diff > 0) ans = false; // order changed
return diff;
}
i++;
}
if (a.Length == b.Length) return 0;
if (a.Length < b.Length) return -1;
ans = false; // order changed
return 1;
});
return ans;
}
}