@ZHANGQIANYI2020
HNUCM-OJ 2的个数,互异字符串,乒乓球筐,九数组分数,数的划分,线性搜索,二分搜索(递归),二分搜索(非递归)
问题 A: 2的个数
(时间限制: 1 Sec 内存限制: 128 MB)
题目描述:
请编写一个程序,输出0到n(包括n)中数字2出现了几次。
输入:
输入一个正整数n。
输出:
输出0到n的数字中2出现了几次。
样例输入:
2
10
20
样例输出:
1
1
3
参考答案:
import java.util.Scanner;
public class Main {
public int Number2(int n) {
int count=0;
for(int i=0;i<=n;i++){
String s=Integer.toString(i);
for(char ch: s.toCharArray()){
if(ch=='2'){
count++;
}
}
}
return count;
}
public static void main(String[] args) {
Main m=new Main();
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int n=sc.nextInt();
System.out.println(m.Number2(n));
}
}
}
问题 B: 互异字符串
(时间限制: 1 Sec 内存限制: 128MB)
题目描述:
请实现一个算法,确定一个字符串的所有字符是否全都不同。
给定一个字符串,请返回一个True代表所有字符全都不同,False代表存在相同的字符。
输入:
输入一个字符串。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。
输出:
如果所有字符全都不同输出“True”,如果存在相同的字符则输出“False”。
样例输入:
aeiou
BarackObama
样例输出:
True
False
参考答案:
import java.util.Scanner;
public class Main {
public static String checkDifferent(String iniString) {
char[] c = iniString.toCharArray();
String flag = "True";
for(int i=1; i<iniString.length(); i++){
if (flag == "False")
break;
char temp = c[i];
for(int j=i-1; j>=0; j--){
if(c[j] == temp){
flag = "False";
break;
}
}
}
return flag;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
String n=sc.next();
System.out.println(checkDifferent(n));
}
}
}
问题 C: 乒乓球筐
(时间限制: 1 Sec 内存限制: 128 MB)
题目描述:
Kimi有两盒(A、B)乒乓球,有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类,并且每种球的数量不少于B盒中的数量,该怎么办呢?