思路
这道题拿到之后第一时间就会想到遍历整个字符串。
于是有了这样的解法:
Java版本解法
import java.util.Scanner; public class Main { public int convert(String str, String flag) { String src = str.toLowerCase(); char[] chars = src.toCharArray(); char c = flag.toLowerCase().charAt(0); int num = 0; for (char aChar : chars) { if (aChar == c) { num++; } } return num; } public static void main(String[] args) { Scanner in = new Scanner(System.in); Main main = new Main(); while (in.hasNext()) { String str = in.nextLine(); String str1 = in.nextLine(); System.out.println(main.convert(str, str1)); } } }
C语言版本解法
#include <stdio.h> #include <string.h> #include <ctype.h> #define SIZE 500 int main() { char array[SIZE]; gets(array); char target = getchar(); int count = 0, len = strlen(array); for (int i = 0; i < len; i++) { if (toupper(array[i]) == toupper(target)) { count += 1; } } printf("%d\n", count); return 0; }
事实证明同样的算法,还是C语言有速度优势