題目描述
給你一個下標從 0 開始長度為 n 的字符串 num ,它只包含數字。
如果對于 每個 0 <= i < n 的下標 i ,都滿足數位 i 在 num 中出現了 num[i]次,那么請你返回 true ,否則返回 false 。
示例 1:
輸入:num = “1210”
輸出:true
解釋:
num[0] = ‘1’ 。數字 0 在 num 中出現了一次。
num[1] = ‘2’ 。數字 1 在 num 中出現了兩次。
num[2] = ‘1’ 。數字 2 在 num 中出現了一次。
num[3] = ‘0’ 。數字 3 在 num 中出現了零次。
“1210” 滿足題目要求條件,所以返回 true 。
示例 2:
輸入:num = “030”
輸出:false
解釋:
num[0] = ‘0’ 。數字 0 應該出現 0 次,但是在 num 中出現了兩次。
num[1] = ‘3’ 。數字 1 應該出現 3 次,但是在 num 中出現了零次。
num[2] = ‘0’ 。數字 2 在 num 中出現了 0 次。
下標 0 和 1 都違反了題目要求,所以返回 false 。
算法分析
標簽:哈希表
利用一個哈希表,統計每種字符出現的次數,然后遍歷每個字符,判斷次數是否匹配
完整代碼
class Solution {
public:bool digitCount(string num) {unordered_map<char,int>m;for(auto i:num)m[i]++;for(int i=0;i<num.size();i++){if((num[i]-'0')!=m[i+'0'])//注意數字轉為字符和字符轉為數字是如何轉換的return false;}return true;}
};
本篇完!