算法打卡day2

66 阅读1分钟

描述

写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

数据范围:1≤n≤1000 

输入描述:

第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。

输出描述:

输出输入字符串中含有该字符的个数。(不区分大小写字母)

示例1

输入:

ABCabc
A

复制

输出:

2

代码实现:

int main() {
    char str[1000] = {0}, ch;
    int count = 0;
    /*数组保存字符串,ch是第二次输入的字符,count统计个数*/
    gets(str);//读入输入字符,遇到回车停止读入
    scanf("%c\n", &ch); //输入要统计数量的字符
    if (ch >= 'a' && ch <= 'z') {
        ch = ch - 32;
    }//如果待查询字符为小写字母,将其转换为大写字母,其余情况不变
    for (int i = 0; i < strlen(str); i++) { //遍历数组
        if (str[i] >= 'a' && str[i] <= 'z') {
            str[i] = str[i] - 32;
        }//将字符串中的小写字母转换成大写字母,其余不变
        if ( ch == str[i] ) {
            count++;
        }
    }
    printf("%d", count);
    return 0;
}

复杂度分析:

时间复杂度:遍历整个数组1次——O(n) 空间复杂度:O(n)