[CareerCup] 1.3 Permutation String 字串的排列
阿新 • • 發佈:2018-12-29
1.3 Given two strings, write a method to decide if one is a permutation of the other.
這道題給定我們兩個字串,讓我們判斷一個是否為另一個的全排列字串。在LeetCode中,關於排列的題有如下幾道,Permutation Sequence 序列排序,Permutations 全排列, Permutations II 全排列之二 和 Next Permutation 下一個排列。這道題跟它們比起來,算是很簡單的了。我們先來看一種O(n)的解決方法,跟之前那道1.1 Unique Characters of a String 字串中不同的字元
class Solution { public: bool isPermutation(string s1, string s2) { if (s1.size() != s2.size()) return false; int m[256] = {0}; for (int i = 0; i < s1.size(); ++i) ++m[s1[i]]; for (int i = 0; i < s2.size(); ++i) { --m[s2[i]]; if (m[s2[i]] < 0) return false; } return true; } };
當然如果不考慮執行效率的話,也可以分別對兩個字串進行排序,排序後的兩個字串如果完全相等則返回true,反之返回false。程式碼如下:
class Solution { public: bool isPermutation(string s1, string s2) { if (s1.size() != s2.size()) return false; sort(s1.begin(), s1.end()); sort(s2.begin(), s2.end()); return s1 == s2; } };