問題描述:
判斷兩個字串是否由相同的字元的組成。
樣例輸入:abcdefghijk 和 kjihgfedcba
abcde 和 bcde
樣例輸出:true
false
**:直接求解,時間複雜度:o(nlogn)思路:將兩個字串進行排序之後依次逐個字元進行比較。
public
static
void
main
(string[
] args)
/* * 判斷兩個字串中的字元是否相同
* 暴力求解:將字元排序逐個比較
*/private
static
boolean
comp
(string s1, string s2)
// 將字元轉化成ascii對應的數字表示
byte
b1 = s1.
getbytes()
;byte
b2 = s2.
getbytes()
;// 排序
arrays.
sort
(b1)
; arrays.
sort
(b2)
;// 將ascii碼轉化成對應的字元,字串完全有序
s1 =
newstring
(b1)
; s2 =
newstring
(b2)
;//進行比較
if(s1.
equals
(s2)
)else
}
結果:
改進**:時間複雜度:o(n)
public
static
void
main
(string[
] args)
/* * 判斷兩個字串中的字元是否相同
* 用空間換時間,時間複雜度o(n)
*/private
static
boolean
comp
(string s1, string s2)
// 將字元轉化成ascii對應的數字表示
byte
b1 = s1.
getbytes()
;byte
b2 = s2.
getbytes()
;// ascii碼字元有266個,定義乙個計數陣列長度為256的陣列,以陣列的下標表示ascii碼對應的字元
// 將s1中的字元出現的次數儲存到陣列中,將s2**現的字元對應的ascii碼值得下標-1
// 初始化計數陣列,將所有的值全部存為0
int[
] count =
newint
[256];
for(
int i =
0; i < count.length; i++
)// 遍歷b1,統計字元出現的次數
for(
int i =
0; i < b1.length; i++
)// 遍歷b2,每出現乙個字元,就將該字元對應的ascii碼下標對應的陣列值-1
for(
int i =
0; i < b2.length; i++
)// 遍歷計數陣列,看陣列中的內容是否都是0,如果都是0,則證明兩個字串中的字元相同
判斷兩個字串是否相同
data segment mess1 db computer software mess2 db computer software data ends code segment assume ds data,cs code start mov ax,data mov ds,ax mov es,ax...
查詢兩個字串中相同字元
for 歷遍第乙個字串的字元,過程中用 in 檢測字元是否存在於第二個字串中。若是在則將其新增在列表中。一 函式檔案 def intersect seq1,seq2 定義交集函式,函式名及變數 res 定義空列表用來盛放相同字元 for x in seq1 歷遍字串1 if x in seq2 歷遍...
翻轉字串和比較兩個字串是否相同
奉獻兩個小題,練習繼續 題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 r...