Day03 2023/03/01
难度:简单
题目1
计算字符的个数
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中 该字符的出现次数。(不区分大小写字母)
数据范围: 1 <= n<=1000
输入描述
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空 格)。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大写字母) 示例1
输入:
ABCabc
A
输出:
2
思路:
1.先判断字符是否为字母
2.若为字母,再判断为大写字母还是小写字母;
3.若为大写字母,则遍历字符串的时候要+32,判断它大写字母在不在字符串当中
若为小写字母,则遍历字符串的时候-32,判读它的小写字母在不在字符串当中
(相同字母大小写的ASII码差32)
4.若为非字母以外的其他字符,则直接判断是否相等
具体实现:
Java:
static int ff(String word,char c){
int ans = 0;
for (int i = 0;i < word.length();i++){
//.若为字母,再判断为大写字母还是小写字母;
if (c >= 65 & c <= 90){
//若为大写字母,则遍历字符串的时候要+32,判断它大写字母在不在字符串当中
ans += word.charAt(i) == c || word.charAt(i) == c + 32 ? 1 : 0;
} else if (c >= 97 & c <= 122) {
//若为小写字母,则遍历字符串的时候-32,判读它的小写字母在不在字符串当中
ans += word.charAt(i) == c || word.charAt(i) == c - 32 ? 1 : 0;
}else {
//若为非字母以外的其他字符,则直接判断是否相等
ans += word.charAt(i) == c ? 1 : 0;
}
}
return ans;
}
c++:
int count(string word , char c) {
int ans = 0;
for( int i = 0; i < word.length(); i++ ) {
if( c >= 65 & c <= 90 ) {
ans += word.at(i) == c || word.at(i) == c + 32 ? 1 : 0;
}
else if( c >= 97 & c <= 122 ) {
ans += word.at(i) == c || word.at(i) == c - 32 ? 1 : 0;
}
else {
ans += word.at(i) == c ? 1 : 0;
}
}
return ans;
}
时间复杂度 O(n);
空间复杂度:O(1);