一.杨辉三角的变形
题目链接:
题目描述:
以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。
求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。
数据范围: 1≤n≤10^9
输入描述:
输入一个int整数
输出描述:
输出返回的int值
示例1:
输入:
4
输出:
3
个人总结:
规律题,类似画一下找吧。
代码实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
if (n <= 2) {
System.out.println(-1);
} else if (n % 2 == 1) {
System.out.println(2);
} else if (n % 4 == 0) {
System.out.println(3);
} else {
System.out.println(4);
}
}
}
}
二.计算某字符出现次数
题目链接:
题目描述:
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围: 1≤n≤1000
输入描述:
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1:
输入:
ABCabc
A
输出:
2
个人总结:
经典哈希表题目,使用一个大小为128的哈希表统计字符出现的次数,题目要求输出不区分大小写,所以输出
map[c] + map[c ^ 32]//(c ^ 32可以实现大小写互换)
。
代码实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
char c = sc.next().charAt(0);
int[] map = new int[128];
for (int i = 0; i < s.length(); i++) {
map[s.charAt(i)]++;
}
System.out.println(map[c] + map[c ^ 32]);
}
}