題目:
給定兩個字串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...