Day54计算字符的个数

159 阅读1分钟

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);