题目
我的题解
import java.util.*;
public class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
String word = sc.nextLine();
String str = sc.nextLine();
char[] arr = word.toCharArray();
char a = str.charAt(0);
int total = 0;
for (int i = 0; i < arr.length; i++) {
if (a == arr[i] || a == arr[i] + 32 || a == arr[i] - 32 ) {
total++;
}
}
System.out.println(total);
}
}
解题时的思路:
1、读入两个数据
2、最开始想用遍历字符串的每个字符然后用java的equalsIgnoreCase比较、但是 for (int i = 0; i < word.length(); i++)之后想不到好方法取值、放弃
3、char[] arr = word.toCharArray();和char a = str.charAt(0);分别可以取出来字符、然后去比较
4、因为大小写、就想到了(a == arr[i] || a == arr[i] + 32 || a == arr[i] - 32 )这种方式来兼容大小写。 题目要求可以为数字、字母、空格、+32和-32这种就太片面、本来范围是数字相等、空格相等、字母大小写匹配;而此时不仅字符相等算匹配成功、而且字符+32,字符-32、这两种情况也都匹配了、显然是错误的
订正
总结:
1、判断字符串是否相等
a.equalsIgnoreCase(b)
a.toUpperCase()
a.toLowerCase()
Character.toUpperCase(s.charAt(i))
2、统一Format的思想、我当时就想单个比较时去Fromat、还要掌握这种整体Format的思想
题解1
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine().toLowerCase();
char c = sc.next().toLowerCase().charAt(0);
int count = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) - c == 0) {
count++;
}
}
System.out.println(count);
}
总结:
1、 String s = sc.nextLine().toLowerCase(); 这种连续使用方法的方式、可以是代码更整洁
2、我当时没想出来的、遍历字符串取字符的写法
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) - c == 0) {
}
}
3、判断字符相等方式
if (s.charAt(i) - c == 0)
if (s.charAt(i) == c)
题解2
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] == chars2[0]) {
count++;
}
}
System.out.println(count);
}
总结:
1、跑的快就是因为使用了BufferedReader
题解3
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine().toLowerCase();
String str1 = br.readLine().toLowerCase();
String substring = str1.substring(0, 1);
System.out.print(str.length() - str.replaceAll(substring, "").length());
}
}