檢查乙個字串是否可以打破另乙個字串 貪心演算法

2021-10-08 11:15:43 字數 1217 閱讀 7801

給你兩個字串 s1 和 s2 ,它們長度相等,請你檢查是否存在乙個 s1 的排列可以打破 s2 的乙個排列,或者是否存在乙個 s2 的排列可以打破 s1 的乙個排列。

字串 x 可以打破字串 y (兩者長度都為 n )需滿足對於所有 i(在 0 到 n - 1 之間)都有 x[i] >= y[i](字典序意義下的順序)。

給你兩個字串 s1 和 s2 ,它們長度相等,請你檢查是否存在乙個 s1 的排列可以打破 s2 的乙個排列,或者是否存在乙個 s2 的排列可以打破 s1 的乙個排列。

字串 x 可以打破字串 y (兩者長度都為 n )需滿足對於所有 i(在 0 到 n - 1 之間)都有 x[i] >= y[i](字典序意義下的順序)。

示例 1:

輸入:s1 = "abc", s2 = "xya"

輸出:true

解釋:"ayx" 是 s2="xya" 的乙個排列,"abc" 是字串 s1="abc" 的乙個排列,且 "ayx" 可以打破 "abc" 。

示例 2:

輸入:s1 = "abe", s2 = "acd"

輸出:false

解釋:s1="abe" 的所有排列包括:"abe","aeb","bae","bea","eab" 和 "eba" ,s2="acd" 的所有排列包括:"acd","adc","cad","cda","dac" 和 "dca"。然而沒有任何 s1 的排列可以打破 s2 的排列。也沒有 s2 的排列能打破 s1 的排列。

示例 3:

輸入:s1 = "leetcodee", s2 = "interview"

輸出:true

解題思路:題目要求我們找到一種字串排列可以打破另乙個字串的一種排列,打破的意思是乙個字串的所有字元都要大於等於另乙個字串的字元(對應位置),那我們只要對這兩個字串排序,然後依次比較每個字元的大小就可以,因為,如果乙個字串的乙個字元不能大於另乙個字串的乙個字元,那換成更小的也沒有意義

完整**:

class solution 

return true;

}}

這道題是貪心演算法裡邊的,我刷了那麼多道貪心演算法,但是我實在是沒看出貪心的思想體現在哪了,而且題目有點簡單了,明明是中等的,想去刷困難的又因為沒有怎麼理解貪心而止步,刷中等又因為太簡單不能看出貪心在哪了,有點煩

判斷乙個字串是否在另乙個字串中

方法一 string str1 nihaoksdoksad string str2 ok int total 0 for string tmp str1 tmp null tmp.length str2.length tmp tmp.substring 1 system.out.println st...

乙個字串是否包含另乙個字串的問題

string s1 2,3,4,5,11,string s2 1,2個字串s1和s2,我用什麼方法判斷s2在不在s1裡呢,而不是把s1裡的 11,當成s2 using system using system.text.regularexpressions class test 在這個程式中,s1 和...

c 判斷乙個字串是否包含另乙個字串

c 開發過程中針對字串string型別的操作是常見操作,有時候需要判斷某個字串是否包含在另乙個字串,此時可以使用indexof方法以及contain方法來實現此功能,contain方法返回true和false,而indexof方法可以返回所在的索引位置,如果為查詢到對應的字串,則返回 1。c 中字串...