【题目描述】
描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围: 1 ≤ n ≤ 1000
输入描述:
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:
ABCabc A输出:
2
分析:
其实这个问题第一反应就是直接拿值去判断是否存在,然后长度++不就完了,关键是这个不区分大写,但是这个也好解决,可以用equalsIgnoreCase来解决,嗯,那这个代码就很好写了
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String parent = bf.readLine();
String str2 = bf.readLine();
int length = 0;
for (int i = 0; i < parent.length(); i++) {
char a = parent.charAt(i);
//统计字母,不区分大小写
if (str2.charAt(0) == a || str2.equalsIgnoreCase(String.valueOf(a))) {
length++;
}
}
System.out.println(length + "");
}
然后一看运行时间
嗯,棒棒的,然后跑去看排名
我凑,6ms咋做到的,跑去看这个大佬写的代码
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] chars1 = br.readLine().toLowerCase().toCharArray();
char[] chars2 = br.readLine().toLowerCase().toCharArray();
int count = 0;
for (int i = 0; i < chars1.length; i++) {
if ((chars1[i] >= 65 || chars1[i] < 90) && (chars1[i] == chars2[0])) {
count++;
}
}
System.out.println(count);
}
可以看到它这块是直接用ASCII码来做了,其中char'65'对应的是A,这样的话,确实会对性能提升很多