判斷兩個字串是否互為變形詞

2021-07-10 23:46:09 字數 1298 閱讀 1092

題目:

給定兩個字串str1和str2,如果str1和str2中出現的字元種類一樣且每種字元出現的次數也一樣,則str1和str2互為變形詞。

請實現函式判斷兩個字串是否互為變形詞。

舉例:

str1="123", str2="231", 返回true;

str1="123", str2="2331",返回false。

難度:

**:

#include #include #include using namespace std;

int main()

sort(str1.begin(), str1.end());

sort(str2.begin(), str2.end());

for (i = 0; i < len1; i++) }

cout << 'y';

return 0;

}

思路:

題目要求是只要保證兩個字串的種類相同、個數相等就是變形詞。

首先,判斷兩個字串長度是否相等,若滿足,則進行下一步判斷;若不滿足,則可以直接判定不是變形詞;

其次,對這兩個字串分別進行公升序排列;

再次,遍歷整個字串,判斷相同下標的字元是否相等。迴圈中判斷有不等,則可以判定不是變形詞;若遍歷結束仍相等,則可以判定是變形詞。

#include #include #include using namespace std;

int main()

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

m[str1[i]]++;

for (i = 0; i < len2; i++) }

cout << 'y';

return 0;

}

思路:

如果字串str1和str2長度不同,直接返回false。

如果長度相同,動態申請乙個map空間m,m[a]=b代表字元a出現次數為b,初始時為0;

先遍歷字串str1,統計每種字元出現次數,如遍歷到字元'a',則m['a']++。這樣就形成了str1中每種字元的詞頻統計表。

再遍歷字串str2,每遍歷到乙個字元都在m中把詞頻減一,如遍歷到字元'a',則m['a']--。

如果減小之後的值小於0,直接返回false;如果遍歷完str2,m中的值沒有出現負值,則返回true。

判斷兩個字串是否互為變形詞

給定兩個字串s1,s2,如果s1,s2 現的字元種類一樣且每種字元出現的次數一樣,則s1,s2互為變形詞。判斷s1,s2是否為變形詞。如遍歷s1,統計每個字元個數,遍歷s2,每個字元,s1字元個數統計對應字元 1,若減到負數,說明個數不匹配,返回false。遍歷完成則返回true from coll...

判斷兩個字串是否互為變形詞

題目 給定兩個字串str1和str2,如果str1和str2 現的字元種類一樣且每種字元出現的次數也一樣,那麼str1與str2互為變形詞。請實現函式判斷兩個字串是否互為變形詞。是變形詞返回true,不是變形詞返回false。舉例 str1 123 str2 231 返回true。str1 123 ...

判斷兩個字串是否互為變形詞

描述 給定兩個字串 str1 和str2 如果兩個字串 現的字元種類一樣,次數也一樣,則互為變形詞,實現乙個函式判斷兩個字串是否互為變形詞。例如 str1 123 str2 132 true str1 123 str2 1332 false public boolean isde string st...