字符出现频率
Frequency of occurence of character
您好请参考以下问题:
Question Link
我使用 HashMap 来存储每个字符的频率,然后将频率存储在数组中,我们只能从字符串中删除一个字母并检查字符串是否包含相同数量的字符。
我的代码通过了所有测试用例,但 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";
}
文件的频率计数是
{p=1, a=11111, b=11111, c=11111, d=11111, e=11111, f=11111, g=11111, h=11111, i=11111}
所以你需要处理只有一个字符且其余字符相等的情况。通过删除单个字符 p
,您将获得有效的解决方案。
您好请参考以下问题: Question Link
我使用 HashMap 来存储每个字符的频率,然后将频率存储在数组中,我们只能从字符串中删除一个字母并检查字符串是否包含相同数量的字符。 我的代码通过了所有测试用例,但 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";
}
文件的频率计数是
{p=1, a=11111, b=11111, c=11111, d=11111, e=11111, f=11111, g=11111, h=11111, i=11111}
所以你需要处理只有一个字符且其余字符相等的情况。通过删除单个字符 p
,您将获得有效的解决方案。