NC312. 字母异位词的长度
描述
示例1
输入:
"aba","aa"
输出:
-1
说明:
第一个字符串与第二个字符串a出现的次数相同,而b出现的次数不同,不符合每个字符出现的次数都相同。故输出-1示例2
输入:
"a","a"
输出:
1
说明:
第一个字符串与第二个字符串每个字符出现的次数都相同,故输出相同的长度为1C 解法, 执行用时: 5ms, 内存消耗: 676KB, 提交时间: 2022-06-27
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param c string字符串 * @return int整型 * * C语言声明定义全局变量请加上static,防止重复定义 */ int isCongruent(char* s, char* c ) { // write code here int hash[26] = {0}; int len_s = strlen(s); int len_c = strlen(c); if (len_s != len_c) return -1; for(int i = 0; i < len_c; i++) { hash[s[i] - 'a']++; } for(int i = 0; i < len_c; i++) { hash[c[i] - 'a']--; } for(int i = 0; i < 26; i++) { if(hash[i] != 0) return -1; } return len_c; }
C++ 解法, 执行用时: 5ms, 内存消耗: 796KB, 提交时间: 2022-03-29
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param c string字符串 * @return int整型 */ int isCongruent(string s, string c) { if (s.length() != c.length()) return -1; vector<int> cnt(26, 0), zero(26, 0); for (int i = 0; i < s.length(); i++) { cnt[s[i] - 'a']++; cnt[c[i] - 'a']--; } if (cnt == zero) return s.length(); return -1; } };
C 解法, 执行用时: 6ms, 内存消耗: 652KB, 提交时间: 2022-06-19
int isCongruent(char* s, char* c ) { int f = strlen(s), k = strlen(c); if (f != k) { return -1; } int x[26] = { 0 }, y[26] = { 0 }; for (int i = 0; i < f; i++) { x[s[i] - 'a'] ++; y[c[i] - 'a'] ++; } for (int i = 0; i < 26; i++) { if (x[i] != y[i]) { return -1; } } return f; }
C 解法, 执行用时: 6ms, 内存消耗: 660KB, 提交时间: 2022-06-16
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param c string字符串 * @return int整型 * * C语言声明定义全局变量请加上static,防止重复定义 */ int isCongruent(char* s, char* c) { int sLen = strlen(s), cLen = strlen(c); if (sLen != cLen) { return -1; } int sHash[26] = { 0 }, cHash[26] = { 0 }; for (int i = 0; i < sLen; i++) { sHash[s[i] - 'a'] += 1; cHash[c[i] - 'a'] += 1; } for (int i = 0; i < 26; i++) { if (sHash[i] != cHash[i]) { return -1; } } return sLen; }
C 解法, 执行用时: 6ms, 内存消耗: 660KB, 提交时间: 2022-03-11
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param c string字符串 * @return int整型 * * C语言声明定义全局变量请加上static,防止重复定义 */ int isCongruent(char* s, char* c ) { int slen = strlen(s); int clen = strlen(c); if (slen != clen) return -1; short * counter = (short *) calloc(26, 2); int res = slen; for (int i = 0; i < slen; ++i) { ++counter[s[i] - 'a']; } for (int i = 0; i < slen; ++i) { --counter[c[i] - 'a']; } for (int i = 0; i < 26; ++i) { if(counter[i] != 0) { res = -1; break; } } return res; }