题一:从控制台输入一个字符串和一个数字,输出字符串中字符出现频率与数字相同的
例1 “acbbefdc” 1
输出:
a
d
e
f
例2 从控制台输入例2 “acbbefdc” 2
输出:
b
c
思路:通过hashmap的方法采取键对值的方法,定义双列集合存储字符串中字符以及字符出现的次数,遍历字符数组获取每一个字符,并将字符存储在双列集合中,打印双列集合与输入数字相同的字符出现的次数。
程序:
package com.nowcoder;
import java.util.HashMap;
import java.util.Scanner;
public class question1 {
public static void main(String[] args) {
Scanner wsq = new Scanner(System.in);
Scanner num = new Scanner(System.in);
System.out.println(“请输入任意一串字符串”);
//1,定义一个需要被统计字符的字符串,并随意输入一串字符串
String s = wsq.next();
int n= Integer.parseInt(num.next());
//2,将字符串转化为字符数组,才能拿到每一个字符
char [] arr = s.toCharArray();
//3,定义双列集合存储字符串中字符以及字符出现的次数
HashMap<Character, Integer> yy = new HashMap<>();
//4,遍历字符数组获取每一个字符,并将字符存储在双列集合中
for(char c : arr){
//5,存储过程中要做判断,如果集合中不包含这个键,就将该字符当作键,值为1存储;如果集合中包含这个键,就将值加1存储
/if(!yy.containsKey©){ //如果不包含这个键
yy.put(c, 1);
}else{
yy.put(c,yy.get© + 1);
}/
yy.put(c,!yy.containsKey© ? 1 :yy.get© + 1);
}
//6,打印双列集合与输入数字相同的字符出现的次数
for (Character key : yy.keySet()) {
if(n==yy.get(key))//yy.keySet() : 代表所有键的集合
{
System.out.println(key); //yy.get(key) : 根据键获取值
}
}
}
}
题二:从控制台输入一个字符串,逆序输出。
如:
输入”I am a student“。
输出”student a am I“。
思路:将输入的字符串以空格分隔,然后存入字符串数组中,采取数组逆序输出的同时补上空格。
注:边界条件,字符串前后有空格的情况。对字符串首尾判断,如有空格插入字符,首位有空格插入"1 “,末尾有空格插入” 1";
程序:
package com.nowcoder;
import java.util.Scanner;
public class question2 {
public static void main(String []args){
Scanner arr=new Scanner(System.in);
String s=arr.nextLine();
// String s="i am a student ";
System.out.println(s);
String s1=conversionStr(s);
System.out.println(s1);
}
public static String conversionStr(String string)
{
if (string == null || "".equals(string))
return null;
int m1=0;int m2=0;
if (' ' == string.charAt(0)){
StringBuilder n1=new StringBuilder(string);
n1.insert(0,"1 ");
string=n1.toString(); m1=1;
}
if (' '==(string.charAt(string.length()-1))){
StringBuilder n2=new StringBuilder(string);
n2.insert(string.length()," 1");
string=n2.toString();m2=1;}
String[] arrStr = string.split(" ");
StringBuilder sb = new StringBuilder(string.length());
for (int i=arrStr.length-1-m2;i>=m1;i--)
{
sb.append(arrStr[i]).append(" ");
}
return sb.toString();
}
}