lintcode 158 兩個字串是變位詞

2022-03-29 14:43:06 字數 700 閱讀 6959

寫出乙個函式 anagram(s, t) 判斷兩個字串是否可以通過改變字母的順序變成一樣的字串。

說明what is anagram?

樣例給出 s = "abcd",t="dcab",返回 true.

給出 s = "ab", t = "ab", 返回 true.

給出 s = "ab", t = "ac", 返回 false.

挑戰o(n) time, o(1) extra space

標籤字串處理 cracking the coding interview

思路

可以先將 2 個字串排序,然後逐個對比字串每位是否相同,但排序需要 o(nlogn) 的時間複雜度

所以可以使用 hash 的方式,開闢 2 個 128 位的空間,記錄 2 個字串每種字元出現的次數,然後比較次數是否相同,若相同,是變位詞,不同,則不是變位詞

code

class solution 

if (sizes != sizet)

int hashs[128] = ;

int hasht[128] = ;

for (i = 0; i < sizes; i++)

for (i = 0; i < 128; i++)

}return true;

}};

158 兩個字串是變位詞

容易 兩個字串是變位詞 檢視執行結果 寫出乙個函式anagram s,t 去判斷兩個字串是否是顛倒字母順序構成的 您在真實的面試中是否遇到過這個題?yes 樣例給出 s abcd t dcab 返回true public class solution param s the first string...

連線兩個字串

include include void main char lianjie char a 30 char b 30 原型 extern char strcat char dest,char src 用法 include 功能 把src所指字串新增到dest結尾處 覆蓋dest結尾處的 0 並新增 ...

交換兩個字串

交換兩個字串,原來的字串分別為 學生 和 好 字串輸出顯示為 學生好 交換後輸出顯示為 好學生 include using namespace std int main char c1 5 學生 char c2 3 好 char m,n,t m c1 n c2 cout 交換前 m n n t co...