【问题标题】:Frequency of occurence of character字符出现频率
【发布时间】:2020-06-01 20:08:11
【问题描述】:

嘿,请参考以下问题: Question Link

我使用 HashMap 存储每个字符的频率,然后将频率存储在数组中,我们只能从字符串中删除一个字母并检查字符串是否包含相等数量的字符。 我的代码正在通过所有测试用例,除了链接中提供的以下内容:

Test Case Link

static String isValid(String s) {
    Map<Character,Integer> freq=new HashMap<Character,Integer>();
    List<Integer> list=new ArrayList<>();
    char[] chars=s.toCharArray();
    for(char c:chars){
        Integer i=freq.get(c);
        if(i==null){
            freq.put(c,1);
        }
        else{
            freq.put(c,i+1);
        }
    }
    for(Integer c:freq.values()){
        list.add(c);
    }
    int[] arr=new int[list.size()];
    for(int i=0;i<list.size();i++){
        arr[i]=list.get(i);
    }
    int count=0;
    int n=arr.length;
    for(int i=0;i<list.size()-1;i++){ //2 2 1 1
        if(arr[i]==arr[i+1]){}
        else{
            if(arr[i]-arr[i+1]==1 || arr[i+1]-arr[i]==1 || arr[i]-arr[i+1]==arr[i]-1 || arr[i+1]-arr[i]==arr[i+1]-1){ 
                arr[i+1]-=1;
                count++;
                }
            else{
                return "NO";
            }
        }
    }
    if(count==1 || count<1){
        return "YES";
    }
    else
    return "NO";
}

【问题讨论】:

    标签: java string dictionary hashmap frequency


    【解决方案1】:

    文件的频率计数是

    {p=1, a=11111, b=11111, c=11111, d=11111, e=11111, f=11111, g=11111, h=11111, i=11111}
    

    因此,当您只有一个字符并且其余字符相等时,您需要处理这种情况。通过删除单个字符p,您将得到一个有效的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-07
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 2013-01-08
      • 1970-01-01
      相关资源
      最近更新 更多