Problem: 1419. Minimum Number of Frogs Croaking 数青蛙内存100%哈希表从左向右统计每个字符的频次叫声的字符是按顺序的croak所以统计的频次也是这样的频次也需要满足:频次© 频次® 频次(o) 频次(a) 频次(k)否则返回-1最后若频次不相等也需要返回-1可能存在同一只青蛙多次鸣叫所以当满足if(c‘c’ ump[‘c’]1 ump[‘r’] 1 ump[‘o’]1 ump[‘a’]1 ump[‘k’]1) 的时候所有频次都-1上述条件表示前面至少已经有一只青蛙完整的叫了一次这只青蛙可以叫下一次Codeclass Solution { public: int minNumberOfFrogs(string croakOfFrogs) { vectorint ump(115, 0); if(croakOfFrogscroak) return 1; int n croakOfFrogs.size(); char c; for(int i 0; i n; i) { c croakOfFrogs[i]; if(cc ump[c]1 ump[r] 1 ump[o]1 ump[a]1 ump[k]1) { ump[c]--; ump[r]--; ump[o]--; ump[a]--; ump[k]--; } ump[c]; if( ump[c]ump[r] || ump[r] ump[o] || ump[o]ump[a] || ump[a] ump[k] ) return -1; } if( ump[c]!ump[r] || ump[r] ! ump[o] || ump[o]!ump[a] || ump[a] ! ump[k] ) return -1; if(ump[c]0) return 1; return ump[c]; } };另外的方案呢Codeclass Solution { public: int minNumberOfFrogs(string croakOfFrogs) { if(croakOfFrogscroak) return 1; int n croakOfFrogs.size(), c0, r0, o0, a0, k0; char ch; for(int i 0; i n; i) { ch croakOfFrogs[i]; if(chc c1 r 1 o1 a1 k1) { c--; r--; o--; a--; k--; } switch(ch) { case c:{ c; break; }case r:{ r; break; }case o:{ o; break; }case a:{ a; break; }case k:{ k; break; }default:{ break; } } if( cr || r o || oa || a k ) return -1; } if( c!r || r ! o || o!a || a ! k ) return -1; return c; } };
leetcode 1419. Minimum Number of Frogs Croaking 数青蛙-内存100
Problem: 1419. Minimum Number of Frogs Croaking 数青蛙内存100%哈希表从左向右统计每个字符的频次叫声的字符是按顺序的croak所以统计的频次也是这样的频次也需要满足:频次© 频次® 频次(o) 频次(a) 频次(k)否则返回-1最后若频次不相等也需要返回-1可能存在同一只青蛙多次鸣叫所以当满足if(c‘c’ ump[‘c’]1 ump[‘r’] 1 ump[‘o’]1 ump[‘a’]1 ump[‘k’]1) 的时候所有频次都-1上述条件表示前面至少已经有一只青蛙完整的叫了一次这只青蛙可以叫下一次Codeclass Solution { public: int minNumberOfFrogs(string croakOfFrogs) { vectorint ump(115, 0); if(croakOfFrogscroak) return 1; int n croakOfFrogs.size(); char c; for(int i 0; i n; i) { c croakOfFrogs[i]; if(cc ump[c]1 ump[r] 1 ump[o]1 ump[a]1 ump[k]1) { ump[c]--; ump[r]--; ump[o]--; ump[a]--; ump[k]--; } ump[c]; if( ump[c]ump[r] || ump[r] ump[o] || ump[o]ump[a] || ump[a] ump[k] ) return -1; } if( ump[c]!ump[r] || ump[r] ! ump[o] || ump[o]!ump[a] || ump[a] ! ump[k] ) return -1; if(ump[c]0) return 1; return ump[c]; } };另外的方案呢Codeclass Solution { public: int minNumberOfFrogs(string croakOfFrogs) { if(croakOfFrogscroak) return 1; int n croakOfFrogs.size(), c0, r0, o0, a0, k0; char ch; for(int i 0; i n; i) { ch croakOfFrogs[i]; if(chc c1 r 1 o1 a1 k1) { c--; r--; o--; a--; k--; } switch(ch) { case c:{ c; break; }case r:{ r; break; }case o:{ o; break; }case a:{ a; break; }case k:{ k; break; }default:{ break; } } if( cr || r o || oa || a k ) return -1; } if( c!r || r ! o || o!a || a ! k ) return -1; return c; } };