题意整理
- 输入一个由字母和数字以及空格组成的字符串,以及一个字母。
- 输出字母在字符串中出现的次数。
方法一(计数+转化为小写)
1.解题思路
- 定义一个变量count用于计数。将输入字符串以及指定字符变为小写形式。
- 遍历整个字符串,如果当前字符与指定字符相等,则计数加一。
- 返回最后count的结果,即为字符出现的次数。
动图展示:
2.代码实现
import java.util.Scanner;
public class Main{
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);
}
}
3.复杂度分析
- 时间复杂度:需要遍历整个字符串,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。
方法二(计数+字符库函数)
1.解题思路
与方法一思路基本相同,不过使用字符库函数将当前字符转化为其大小或者小写,来与指定字符比较。
2.代码实现
import java.util.Scanner;
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 count=0;
for(int i=0;i<s.length();i++){
//如果是指定字母,或者其大小写,则计数加一
if(s.charAt(i)==c||Character.toUpperCase(s.charAt(i))==c||Character.toLowerCase(s.charAt(i))==c){
count++;
}
}
System.out.println(count);
}
}
3.复杂度分析
- 时间复杂度:需要遍历整个字符串,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。