算法刷题-计算某字符出现次数-JAVA
0x00 引言
为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。
题解只写自己理解的解法,其他解法不再增加。题目与解析均在代码里面。
0x01 难度等级
简单
0x02 代码
package 简单; import java.util.Locale; import java.util.Scanner; /** * 描述 * 写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母) * * 数据范围: * 1 * ≤ * � * ≤ * 1000 * * 1≤n≤1000 * 输入描述: * 第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。 * * 输出描述: * 输出输入字符串中含有该字符的个数。(不区分大小写字母) * 输入: * ABCabc * A * 复制 * 输出: * 2 */ public class 计算某字符出现次数 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String str=sc.nextLine().toLowerCase(Locale.ROOT);//把(ABacb全部转换为小写:abacb) String s=sc.nextLine().toLowerCase(Locale.ROOT);//把(A转换为小写:a) // System.out.println(str.replaceAll(s,""));//bcb,把原始字符串中的字符替换为空 System.out.println(str.length()-str.replaceAll(s,"").length()); //字符串的总长度(ABacb 5)-剩下的字符串(bcb 3) } }
0x03 算法思想
将字符串全部转换为小写之后,把需要统计的字符也转为小写,然后置空它,然后再用原始的字符串长度减去置空的字符串的长度就是我们需要统计的字符的个数。类似于反向思维,考查方法:
str.replaceAll(s,"")(把字符串中所有的s字符替换为空)
0x04 运行结果