首页 > 试题广场 > 计算某字母出现次数
[编程题]计算某字母出现次数
  • 热度指数:706924 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

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


输入描述:

第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。



输出描述:

输出输入字符串中含有该字符的个数。

示例1

输入

ABCabc
A

输出

2
推荐
import java.util.*;
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner s=new Scanner(System.in);
        String all="";
        String one="";
        char[] ac;
        char temp;
        int num=0;
        while(s.hasNext())
        {
            //s.toUpperCase(),String 转化为大写
            //s.toLowerCase(),String 转化为小写
            //String字符转换,s.toCharArray()与s.charAt(index)
            //char字符转换,String.valueOf(c)转化为String
        	all=s.nextLine();
            one=s.nextLine();
            //存放原来所有的
            ac=all.toCharArray();
            //存放要的字符
            //temp=one.charAt(0);
            for(int i=0;i<ac.length;i++)
            {
            	if(one.equalsIgnoreCase(String.valueOf(ac[i])))    
                    num++;
            }
            System.out.println(num);
        }
        
    }
    
}

编辑于 2017-03-04 16:05:10 回复(42)
a=input().lower()
b=input().lower()
print(a.count(b))

python3 solution, easy to understand!


编辑于 2018-03-28 14:17:35 回复(28)
import java.util.*;

public class Main{
    
    public static void main(String[] args){
                    
        int count=0;
        
        Scanner in = new Scanner(System.in);
        String str = in.nextLine().toUpperCase();
        
        char target  = in.nextLine().toUpperCase().toCharArray()[0];
      
        for(int i=0;i<str.length();i++){
            if(str.charAt(i) == target){
                count++;
            }
        }
        
        
        
        System.out.println(count);

    }     
        
}


发表于 2016-07-22 23:49:56 回复(17)
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
while(getline(cin,str))
{
char s;
cin >> s;
int count = 0;
for(int i=0;i<str.size();i++)
{
if(s == str[i])
count++;
}
cout << count<<endl;
cin.ignore();
}
}
下面有问题
while(getline(cin,str))
cin >>s
循环的时候会出问题,第二次循环读不出s,后面加上一个cin.ignore()就好了,给所有出现此问题的人。。
发表于 2016-04-06 16:27:00 回复(17)
正则表达式,几句话搞定
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine().toUpperCase();
        String c = in.next().toUpperCase();
        System.out.println(str.replaceAll("[^" + c + "]", "").length());
        in.close();
    }
}

发表于 2017-04-05 17:53:49 回复(4)
牛逼冲冲的C/C++方法,简单好理解

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
	string str;
	char ch;

	while (cin >> str >> ch)
	{

		if (ch >= 'a'&&ch<='z')
			cout << (count(str.begin(), str.end(), ch) + count(str.begin(), str.end(), (char)(ch - 32))) << endl;
		else if (ch>='A'&&ch <= 'Z')
			cout << (count(str.begin(), str.end(), ch) + count(str.begin(), str.end(), (char)(ch + 32))) << endl;
		else
			cout << count(str.begin(), str.end(), ch) << endl;

	}

	return 0;
}

发表于 2016-07-04 11:26:47 回复(22)
/*由于不清楚C++字符串类的大小写转换的函数,只能将要比较的字符进行了转换*/
#include<iostream>
#include<string>

using namespace std;

int main(){
	string input;
	char target;
	getline(cin,input);
	cin>>target;
	char target1;
	if(target>=65 && target<=96)
		target1=target+32;
	if(target>=97 && target<=129)
		target1=target-32;
	int count=0;
	for(int i=0;i<input.length();++i){
		if(input[i]==target || input[i]==target1)
		count++;
	}
	cout<<count<<endl;
	return 0;
} 

编辑于 2016-03-29 13:01:13 回复(9)
#include<iostream>
#include<string>

using namespace std;
int main()
{
	 string str;
        getline(cin,str);
    
    	char a;
    	cin>>a;
        int contt=0;
    	for(int i=0; i<str.length(); i++)
        {
            if(a==str[i] || a==str[i]-32 || a==str[i]+32)
                contt++;
        }
        cout<<contt<<endl;
    return 0;
}

编辑于 2016-09-04 15:16:12 回复(5)


#include <iostream>
#include <map>
using namespace std;
int main(){
    map<char,int>words;
    char ch;
    while ((ch=getchar())) {
        if(ch=='\n')
            break;
        else
            words[ch]++;
    }
    cin>>ch;
    cout<<words[ch]<<endl;
    return 0;
}

发表于 2016-01-07 21:22:50 回复(5)
python并且区分大小写

all = raw_input()
one = raw_input()
print all.lower().count(one.lower())

发表于 2017-08-30 16:58:00 回复(2)
//用C语言写的

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    char my_char = 0, str[1000] = {0};
    int len = 0;

    gets( str );
    scanf( "%c", &my_char );
    
    for( int i = 0; str[i] != '\0' && i < 1000; i++ )
        if( str[i] == my_char || tolower(str[i]) == tolower(my_char) )
            len++;

    printf( "%d\r\n", len );
    
    return 0;
}


发表于 2018-04-08 21:22:48 回复(3)
真的没有js吗
var str=readline();
var t=readline();
function fun(str,t){
    var str1=str.toLowerCase();
    var t1=t.toLowerCase();
    var count=0;
    for(i in str1){
        if(str1[i]===t1){
            count++
        }
        
    }
    return count;

    
}
console.log(fun(str,t))

发表于 2018-05-28 21:02:20 回复(1)
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        String c=sc.next();
        int num=0;
        for(int i=0;i<str.length();i++){
            if(c.equals(String.valueOf(str.charAt(i))))
                num++;
        }
        System.out.println(num);
    }
}
发表于 2016-02-10 10:32:00 回复(9)

import java.util.Scanner;
public class Main{
   public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        String str = s.next();
        String str2 = s.next();
        int count = findFrequentStr(str,str2);
        System.out.println(count);
    }
   public static int findFrequentStr(String str,String str1){
     if(str == null || str1 == null){ return 0;}
     str.toLowerCase();
     str1.toLowerCase();
     char[] array = str.toCharArray();
     int len = array.length;
     int count = 0;
     for(int i = 0 ; i < len ; i++){
         if(array[i] == str1.toCharArray()[0]){
             count++;
         }
     }
     return count;
 }
}
发表于 2016-02-29 21:07:08 回复(4)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//不区分大小写 'A'=65,'a'=97
int getNum(char *str,char ch,int len){
	int num;
	int i;
	for(i=0;i<len;i++){
		//不区分大小写,故直接用ASCII值进行比较 
		if(str[i]==ch||str[i]+32==ch||str[i]-32==ch){
			num++; 
		}
	}
	return num;
}
int main(){
	char str[1000];
	char ch;
	gets(str);
	int len=strlen(str);
	scanf("%c",&ch);
	int num=getNum(str,ch,len);
	printf("%d",num);
	return 0;
}

发表于 2016-09-02 12:43:32 回复(2)

#include <iostream>

#include<string>

using namespace std;

int main(){

    string str;

    char find;

    long len;

    int diff = 'A'-'a';

    int find_len=0;

    getline(cin,str);

    cin.get(find);   

    len = str.size();

    for(int i =0;i<len;++i)

        if(str[i]==find|| str[i]+diff==find||str[i]-diff==find)

             find_len++;

    cout<<find_len<<endl;

    return 0;

}

发表于 2018-03-23 12:19:17 回复(0)
看了半天觉得我的好简单就贴上来吧 大小写转换用库函数就好了 回车问题每次使用get()读取就好了
#include <string>
#include <iostream>
#include <cctype>
using namespace std;

int main()
{
	string str;
	char ch;
	while(getline(cin,str))
	{
		if(cin.get(ch).get())
		{
			int count = 0;
			for(int i=0; i<str.size(); ++i)
			{
				if(toupper(str[i]) == toupper(ch))
					count++;
			}
			cout << count << endl;
		}

	}
	return 0;
}

发表于 2017-06-20 23:23:50 回复(1)
var r1=readline.createInterface({
    input:process.stdin,
    output:process.stdout
});
    var a=[];
    r1.on('line',function(line){
        a.push(line);
        if(a.length==2) r1.close();
    })

    r1.on('close',function(){
         var re = eval("/" + a[1] + "/ig");//正则表达式中使用变量
         //http://blog.csdn.net/icanlove/article/details/39499777 这个建议使用另外一种方法,说eval很多缺点,没有找到
         //正确的方式,默默的使用eval了
        var len = a[0].match(re);//match进行全局匹配之后返回的是一个匹配的子字符串的数组
        var count = len ? len.length : 0;//用于判断如果没有匹配,match返回的是空的情况,此时没有长度,直接赋值为0
        // count子字符串的数组
        console.log(count);
        a.length=0;
    }) 

参考前面提交者的输入输出,终于运行出来了,在牛客网上写js有点微微的哀伤



发表于 2016-09-16 09:57:07 回复(1)
通过正则表达式进行split
import java.util.Scanner;
import java.util.regex.Pattern;

public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String part = "[^"+sc.nextLine()+"]";
Pattern pt = Pattern.compile(part);
String[] ele = pt.split(str.toLowerCase());
StringBuffer sb = new StringBuffer();
for(String s:ele){
sb.append(s);
}
System.out.println(sb.toString().length());

}

}

发表于 2016-07-31 13:18:39 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        String c=sc.next();
        int num=0;
        for(int i=0;i<str.length();i++){
            if(c.equalsIgnoreCase(str.substring(i,i+1)))
                num++;
        }
        System.out.println(num);
    }
}
发表于 2016-07-02 18:02:08 回复(0)
主要是区分大小写就行,用了string类的成员函数
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
    string str;
    char mm;
    
    while(getline(cin,str)&&(cin>>mm))
    {
        int count=0;
        int pos=0;
        int i;
        for(i=0;i<str.size();i++)
            str[i]=tolower(str[i]);
        mm=tolower(mm);
        
        while((pos=str.find_first_of(mm,pos))!=string::npos)
        {
             count++;  
             pos++;
        }
        cout<<count<<endl;
        
    }
    return 0;
}

编辑于 2016-10-19 16:18:38 回复(0)