字符串

1 删除字符串中出现次数最少的字符
题目:实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序注意每个输入文件有多组输入,即多个字符串用回车隔开。
输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:删除字符串中出现次数最少的字符后的字符串。
示例1
输入abcdd 输出dd

package com.jiashun;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Demo15 {
    public static void main(String[] args) {
       String s="abcdbcadc";
        String s1 = delete(s);
        System.out.println(s1);
    }
    public static String delete(String s){
        Map<Character,Integer>map=new HashMap<>();
        for(int i=0;i<s.length();i++){
            if(map.containsKey(s.charAt(i))){
                map.put(s.charAt(i),map.get(s.charAt(i))+1);
            }else
                map.put(s.charAt(i),1);
        }
        Collection<Integer> values = map.values();
        Integer min = Collections.min(values);
        StringBuilder builder=new StringBuilder();
         for(int i=0;i<s.length();i++){
             if(!map.get(s.charAt(i)).equals(min)){
                 builder.append(s.charAt(i));
             }
         }
         return builder.toString();
    }
}

2 第一个只出现一次的字符
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。
示例:
s = “abaccdeff”
返回 “b”
s = “”
返回 " "

 public static  Character show(String s){
        if(s.isEmpty()){
            return ' ';
        }
        Map<Character,Integer>map=new HashMap<>();
          for(int i=0;i<s.length();i++){
              if(map.containsKey(s.charAt(i))){
                      map.put(s.charAt(i),map.get(s.charAt(i))+1);
              }else
                  map.put(s.charAt(i),1);
          }
          for(int i=0;i<s.length();i++){
               if (map.get(s.charAt(i))==1){
                   return s.charAt(i);
               }
          }
          return ' ';
    }
}
public static Character show(String s){
    char[] chars = s.toCharArray();
    for(int i=0;i<s.length();i++){
        if(s.indexOf(chars[i])==s.lastIndexOf(chars[i])){
            return chars[i];
        }
    }
    return ' ';
}

面试题39. 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定数组总是存在多数元素。
示例 1:
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2
限制:
1 <= 数组长度 <= 50000

class Solution1 {
    public int majorityElement(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(nums[i])) {
                map.put(nums[i], map.get(nums[i]) + 1);
            } else
                map.put(nums[i], 1);
        }
        for (int i = 0; i < nums.length; i++) {
            if (map.get(nums[i]) > nums.length / 2) {
                return nums[i];

            }
        }
        return 0;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值