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;
}
}