php 字符串包含另一个字符串_leetcode1433_go_检查一个字符串是否可以打破另一个字符串...
leetcode1433_檢查一個(gè)字符串是否可以打破另一個(gè)字符串
01
—
題目
給你兩個(gè)字符串 s1 和 s2 ,它們長(zhǎng)度相等,請(qǐng)你檢查是否存在一個(gè) s1 的排列可以打破 s2 的一個(gè)排列,
或者是否存在一個(gè) s2 的排列可以打破 s1 的一個(gè)排列。
字符串 x 可以打破字符串 y (兩者長(zhǎng)度都為 n )需滿足對(duì)于所有 i(在 0 到 n - 1 之間)
都有 x[i] >= y[i](字典序意義下的順序)。
示例 1:輸入:s1 = "abc", s2 = "xya" 輸出:true
解釋:"ayx" 是 s2="xya" 的一個(gè)排列,"abc" 是字符串 s1="abc" 的一個(gè)排列,且 "ayx" 可以打破 "abc" 。
示例 2:輸入:s1 = "abe", s2 = "acd" 輸出:false
解釋:s1="abe" 的所有排列包括:"abe","aeb","bae","bea","eab" 和 "eba" ,
s2="acd" 的所有排列包括:"acd","adc","cad","cda","dac" 和 "dca"。
然而沒(méi)有任何 s1 的排列可以打破 s2 的排列。也沒(méi)有 s2 的排列能打破 s1 的排列。
示例 3:輸入:s1 = "leetcodee", s2 = "interview" 輸出:true
提示:s1.length == n
s2.length == n
1 <= n <= 10^5
所有字符串都只包含小寫英文字母。
02
—
解題思路分析
1、排序遍歷;時(shí)間復(fù)雜度O(nlog(n)),空間復(fù)雜度O(n)
func checkIfCanBreak(s1 string, s2 string) bool { arr1 := []byte(s1) sort.Slice(arr1, func(i, j int) bool { return arr1[i] < arr1[j] }) arr2 := []byte(s2) sort.Slice(arr2, func(i, j int) bool { return arr2[i] < arr2[j] }) s1 = string(arr1) s2 = string(arr2) return compare(s1, s2) || compare(s2, s1)}func compare(s1 string, s2 string) bool { for i := 0; i < len(s1); i++ { if s1[i] < s2[i] { return false } } return true}2、計(jì)數(shù)排序;時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(n)
func checkIfCanBreak(s1 string, s2 string) bool { arr1 := [26]int{} arr2 := [26]int{} for i := 0; i < len(s1); i++ { arr1[int(s1[i]-'a')]++ arr2[int(s2[i]-'a')]++ } a, b := 0, 0 totalA, totalB := 0, 0 for i := 0; i < 26; i++ { totalA = totalA + arr1[i] totalB = totalB + arr2[i] if totalA >= totalB { a++ } if totalB >= totalA { b++ } } return a == 26 || b == 26}03
—
總結(jié)
Medium題目,對(duì)2個(gè)字符串進(jìn)行排序然后比較,只要存在一種情況即可
總結(jié)
以上是生活随笔為你收集整理的php 字符串包含另一个字符串_leetcode1433_go_检查一个字符串是否可以打破另一个字符串...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python里保存图片_python保存
- 下一篇: python接口返回json处理_pyt