首页 > 试题广场 >

计算某字符出现次数

[编程题]计算某字符出现次数
  • 热度指数:1380234 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的由大小写字母、数字和空格混合构成的字符串 s ,统计字符 c 在其中出现的次数。具体来说:
\hspace{23pt}\bullet\,c 为大写或者小写字母,统计其大小写形态出现的次数和;
\hspace{23pt}\bullet\,c 为数字,统计其出现的次数。
\hspace{15pt}保证字符 c 仅为大小写字母或数字。

输入描述:
\hspace{15pt}第一行输入一个长度 1 \leqq {\rm length}(s) \leqq 10^3 ,由大小写字母、数字和空格混合构成的字符串 s 。保证首尾不为空格。
\hspace{15pt}第二行输入一个字符 c ,代表需要统计的字符。


输出描述:
\hspace{15pt}在一行上输出一个整数,代表字符 c 在字符串 s 中出现的次数。
示例1

输入

HELLONowcoder123
o

输出

3

说明

\hspace{15pt}由于 o 为小写字母,因此统计其小写形态出现的次数和,即 3
示例2

输入

H E L L O Nowcoder123
1

输出

1
推荐
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 回复(45)
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string input;
    char s,m;
    getline(cin, input);
    cin>>s;
    m=s;
    if('A'<=s<='z')
    {
        if('A'<=s&&s<='Z')
            m=s+32;
        else if('z'>=s&&s>='a')
            m=s-32;
        int count=0;
        int length=input.size();
        for(int i=0;i<length;i++)
        {
            if(input[i]==s||input[i]==m)
            {
                count++;
            }
        }
        cout<<count<<endl;
        
    }
   
    return 0;
}


发表于 2021-02-14 21:59:09 回复(0)
var str_1 = readline(); //获取第一行内数据 ABCabc
var str_2 = readline(); //获取第二行内数据 A
var num_need = 0;  //记录包含的个数
let need_Lower = str_2.toLowerCase();
let need_Bigger = str_2.toUpperCase();
for(let item of str_1){
    if(item == need_Lower || item == need_Bigger){
        num_need++
    }
}
console.log(num_need)

或者
var str_1 = readline(); //获取第一行内数据 ABCabc
var str_2 = readline(); //获取第二行内数据 A
var num_need = 0;  //记录包含的个数
let need_Lower = str_2.toLowerCase();
let need_Bigger = str_2.toUpperCase();
for(let item of str_1){
    if(str_1[i] == need_Lower || str_1[i] == need_Bigger){
        num_need++
    }
}
console.log(num_need)
发表于 2021-01-09 19:35:28 回复(0)
 来个C的:
#include <stdio.h>
int main(void) {
    char s[1000] = {0}, ch, *p = s - 1;
    int total = 0;
    gets(s), scanf("%c\n", &ch);
    if (ch >= 'A' && ch <= 'Z') ch -= 'A' - 'a';
    while (*(++p) != '\0') if (*p == ch || *p == ch + 'A' - 'a') total++;
    return printf("%d\n", total), 0;
}

编辑于 2021-01-22 16:40:04 回复(0)
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String line = scanner.nextLine().toLowerCase();
            int count = 0;
            if (line.matches("[0-9A-Za-z].*")) {
                for (int i = 0; i < 1; i++) {
                    String charStr = scanner.nextLine();
                    if (charStr.length() != 1) {
                        break;
                    }
                    char[] charArr = line.toCharArray();
                    char findCharArr = charStr.toLowerCase().toCharArray()[0];
                    for (int j = 0; j < charArr.length; j++) {
                        if (charArr[j] == findCharArr) {
                            count++;
                        }
                    }
                }
                System.out.println(count);
            }
        }
    }

编辑于 2020-08-08 12:28:08 回复(0)
/* 注意大小写转换*/
#include<iostream>
(720)#include<string>
using namespace std;

int main(){
    string input1,input2,input3;
    int k=0;
    while(cin>>input1&&cin>>input2);
    if('a'<=input2[0]&&'z'>=input2[0])
        input3=input2[0]-32;
    if('A'<=input2[0]&&'Z'>=input2[0])
        input3=input2[0]+32;
    for(int i=0;i<input1.length();i++){
        if(input2[0]==input1[i]||input3[0]==input1[i]) ++k;
            
    }
    cout<<k<<endl;
    return 0;
}


发表于 2020-02-28 12:06:05 回复(0)
//暴力就完事了
#include<iostream>
#include<string>
using namespace std;
int main(){
    string s;
    char a;
    while(cin>>s>>a){
        int count=0;
        for(int i=0;i<s.size();i++){
            if(s[i]==a||s[i]-32==a||s[i]+32==a)
                count++;
    }
        cout<<count<<endl;
}
    return 0;
}
发表于 2020-02-11 13:12:51 回复(0)
function getWordCount(string,target){
    let map = {}
    for(char of string){
        map[char] ? map[char]++ : map[char] =1
    }
    if(target in map){
        return map[target]
    }
   
}

console.log(getWordCount('asdqdnqwdiuqnwdiuqwndiuqwdnqwd','d'))
JavaScript using hashtable
发表于 2020-02-04 15:55:39 回复(0)
#include <iostream>
#include <string>

using namespace std;

int main(void)
{
    string s1;
    char s2;
    int num=0,i=0,j=0;
    getline(cin,s1);
    cin >> s2;
    num=s1.size();
    for ( i = 0; i < num; i++)
    {
        if (s1[i]>='A' && s1[i]<='Z')
        {
            s1[i] = s1[i] + 32;
        }
        if (s2>='A' && s2<='Z')
        {
            s2 = s2 + 32;
        }
        if (s1[i] == s2 )
        {
            j++;
        }
    }
    cout <<j <<endl;
    return 0;
}

发表于 2020-01-26 13:42:49 回复(0)
remove掉list中所有的指定字符,前后size相减
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		String str=sc.next().toUpperCase();
		String s=sc.next().toUpperCase();
		List<String> list=new ArrayList<String>();
		Collections.addAll(list, str.split(""));
		int a=list.size();
		while(list.contains(s)) {
			list.remove(s);
		}
		System.out.println(a-list.size());
	}
}


编辑于 2019-10-29 00:30:56 回复(0)
var readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
var lines = [];
var countLine=1;
rl.on("line", function(line) {
    //将输入放到新建的空数组中
    lines.push(line);
    if(countLine==2){
    var str=lines[0].trim().toLowerCase();
    var c=lines[1].trim().toLowerCase();
    var count=0;
    var index=0;
    while(str.indexOf(c,index)!==-1&&index<str.length){
        index=str.indexOf(c,index)+1;
        count++;
        }
    countLine=1;
    lines=[];
    console.log(count);
    }
    else{
        countLine++;
    }
});



发表于 2019-07-03 10:00:55 回复(1)

#include<iostream>

#include<string>
using namespace std;

int main()
{
int i = 0;
string str;
char a;
cin >> str;
cin >> a;
/因为不区分大小写,所以先全部统一成大写,再进行比较/
//将str和a都转换成大写
for (auto &s : str)
s=toupper(s);
a = toupper(a);
/用范围for循环将str的每个字符与a进行比较
,与a相等则i+1
/
for (auto s : str)
{
if (s == a)
i++;
}
cout << i << endl;//输出i;
return 0;
}

发表于 2019-03-30 13:52:25 回复(0)
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
sc.useDelimiter("\n");
String str = sc.next().toUpperCase();
String findStr = sc.next().toUpperCase().replaceAll("\r", "");
int num = 0;
int index = str.indexOf(findStr);
while(index != -1 && str != ""){
num++;
str = str.substring(index + 1);
index = str.indexOf(findStr);
}
System.out.println(num);
sc.close();
}
}

编辑于 2019-03-29 15:28:44 回复(0)
#include<iostream>
#include<string>
#include<cmath>
using namespace std;

int PrintCharNum(string &str, char c)
{     int count = 0;     for (int i = 0; i<str.size(); i++)     {         if (abs(str[i] - c) == 0 || abs(str[i] - c) == 32)             count++;     }     return count;
}

int main()
{     string str;     char c;     getline(cin, str);     cin >> c;     cout << PrintCharNum(str, c) << endl;     return 0;
}
大小写字母相差32,可以用其差的绝对值来进行条件判定。
编辑于 2018-11-28 16:48:56 回复(0)
ASCII暴算,反正只有字母和数字不是?
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int sum;
int main()
{
    string a;
    char b;
    cin>>a>>b;
    int len=a.length();
    while(len--)
        if(a[len]==b||a[len]==b+32||a[len]==b-32)sum++; 
    cout<<sum;
    return 0;
}

发表于 2018-09-29 20:03:08 回复(0)
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string str;
    getline(cin,str);
    char end = 0;
    cin>>end;  //换行输入,那么最后一个字符就是end
    int len=str.size();
    char End=str[len-1];//没有换行输入的最后一个字符
    int num=0;
    for(int i=0;i<len-1;++i)
    {
        if(end !=0) //有换行输入
        {
            if(end>='a')
            {
                if(str[i]==end || str[i]==end-32)
                    num++;
            }
            else
            {
                if(str[i]==end || str[i]==end+32)
                    num++;
            }
            
        }
        else  //输入只有一行
        {
             if(End>='a')
                {
                    if(str[i]==End || str[i]==End-32)
                        num++;
                }
            else
                {
                    if(str[i]==End || str[i]==End+32)
                        num++;
                }
        }
    }
    cout<<num;
    return 0;
}

发表于 2018-08-16 15:34:46 回复(0)
#include <iostream>
#include<string>
using namespace std;
int main()
{
    char a[1000],b;
    int count=0;
    cin.get(a,1000);
    cin>>b;
    if(b>='a'&&b<='z') b=b-32;
    for(int i=0;a[i]!='\0';i++)
    {
        if(a[i]>='a'&&a[i]<='z') a[i]=a[i]-32;
        if(a[i]==b) count+=1;
    }
    cout<<count;
}

发表于 2018-04-15 16:03:05 回复(0)
//注意字母大小写和cin.get()消除上个输入中残留的换行符
#include <iostream>
#include <string>
using namespace std;
int main(){    
    string str;
    char s;
    while(getline(cin,str)){
        int count=0;
        cin>>s;        
        for(int i=0;i<str.length();i++){
            if(str[i]==s||str[i]+32==s||str[i]-32==s) count++;
        } 
        cout<<count<<endl;
        cin.get();
    }
    return 0;
}

编辑于 2017-12-05 17:51:05 回复(0)
package com.gulamjan.t011.华为计算字符个数;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
 public static void main(String[] args) throws IOException {
  // TODO Auto-generated method stub
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String string = br.readLine();
  String charString = br.readLine();
  char[] ch = charString.toCharArray();
  while ((string != null)) {
   System.out.println(getStatistics(string, ch));break;
  }
 }
 public static int getStatistics(String  string ,char ch[]) {
  char array[] = string.toCharArray();
  String chString = String.valueOf(ch);
  int counter = 0;
  for (int i = 0; i < array.length; i++) {
   String arr = String.valueOf(array[i]);
   if (arr.equalsIgnoreCase(chString)) {
    counter++;
   }
  }
  return counter;
 }
}
发表于 2017-10-04 10:11:28 回复(0)
#include<iostream>
#include<string>
using namespace std;
int main()
    {
    string str;
    char ch;
    getline(cin,str);
    ch=getchar();
    for(int i=0;i<str.length();i++)
        str[i]=tolower(str[i]);
    ch=tolower(ch);
    int num=0;
    int hoc=str.find(ch);
    while(str.find(ch,hoc)!=string::npos)
    {
     num++;
     hoc=str.find(ch,hoc+1);
    }
    cout<<num<<endl;
    return 0;
}

发表于 2017-09-11 21:46:26 回复(0)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.CharBuffer;
import java.util.Scanner;

public class Main{
/*
* 写出一个程序,接受一个有字母和数字以及空格组成的字符串, 和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
*/

public static void count(String str, Character ch) {
int len = str.length();
int result=0;
char[] ch2 = str.toCharArray();
for (int i = 0; i < len; i++) {
if(ch2[i]==ch){
result++;
}
}
System.out.println(result);
}

public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String readLine = bf.readLine().toUpperCase();
char ch=(char) bf.read();
if(ch>='a'&&ch<='z'){
ch = Character.toUpperCase(ch);
}
count(readLine, ch);

}
}

编辑于 2017-08-31 21:17:39 回复(0)