计算字符串个数

1、题目描述

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

输入描述:

输入一个有字母和数字以及空格组成的字符串,和一个字符。

输出描述:

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

输入例子:

ABCDEF
A

输出例子:

1

2、代码

方案一

基本思路:定义String、Char变量--通过getline、cin输入变量--遍历String数组进行比较--输出count。

//适合任何字符输入
#include<iostream>
#include<string>

using namespace std;

int main(){
    string inputString;
    char inputChar;

    getline(cin,inputString);
    //getline从标准输入设备上读入字符,然后返回给输入流cin,这里是将数据绑定到变量inputString上面
    cin>>inputChar;
    //scanf("%c",&inputChar);
    //以上是两种输入的方式:cin和scanf()

    int count=0;
    for(int i=0;i<inputString.length();++i){
    //for(int i=0;i<inputString.length();i++)
        if(inputString[i]==inputChar)
        count++;
    }
    cout<<count<<endl;
    return 0;
}

说明:单一字符的输入方法:cin和scanf(),字符串的输入方法getline()

拓展:

一个偶然发现的错误,代码如下:

int count;
cout<<count<<endl;
for(int i=0;i<inputString.length();++i){
if(inputString[i]==inputChar)
count++;
}
cout<<count<<endl;  

输出结果:

注意:这里我们定义了int变量,但是未进行初始化,也就是说它的值是随机分配的,我们输出的结果自然也是不确定的,这个错误一定要引起重视。

我们也可以采用数组进行统计字符个数:

//仅适用于字母输入,了解即可不推荐
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <String>
using namespace std;
int main()
{
	int charNum[26];
	for(int i =0; i<26; i++)
	{
		charNum[i] = 0;
	}
	string str;
	cout<<"please input a string : "<<endl;
	getline(cin,str);
	int strLen = str.length();
	for(int i=0; i < strLen; i++)
	{
		char s = str.at(i);
		if(s >= ‘A‘ && s <= ‘Z‘)
		{
			int n = s - ‘A‘;
			charNum[n]++;
		}
		else if( s >= ‘a‘ && s <= ‘z‘)
		{
			int n = s - ‘a‘;
			charNum[n]++;
		}
	}
	for(int i = 0; i< 26; i++)
	{
		char char_A = ‘A‘ + i;
		cout<<" the num of the char :"<<char_A<<" = "<<charNum[i]<<endl;
	}
	system("pause");
	return 0;
}

方案二

基本思路:借助map容器存储--寻找相等的key--value加1--输出value

//依据下面操作进行改进即可:
#include <iostream>
#include <map>
#include <stdio.h>

using namespace std;

int main(){
    map<char,int>inputString;
    //这里的输入String作为单一的char类型进行存储
    char inputChar;
    while ((inputChar=getchar())) {
    //getchar函数的功能是从键盘上输入一个字符,这里是将输入的字符绑定到变量inputChar上  //while循环的作用是持续不断获取来自键盘的输入字符,直到输入换行
        if(inputChar==‘\n‘)
        //如果是换行,则持续检查输入字符,因为换行是不作为一个字符处理的
            break;
            //一开始输入的时候没有换行,先执行else的语句,即把map初始化,然后换行输入待比较的字符,即执行break跳出这个while
        else
            inputString[inputChar]++;
            //如果对应的key,即char字符相等,则value加1
            //这里其实就是对map进行初始化
    }
    //以上是通过inputChar对inputString Map赋值
    cin>>inputChar;
    //这里输入的是字符,而不是字符串
    cout<<inputString[inputChar]<<endl;
    //这里不能区分大小写字母,即a与A作为两个字符处理,需要改进
    return 0;
}

以上程序未区分大小写,作如下改进:

//适合任意类型的字符串
#include <iostream>
#include <map>
#include <stdio.h>
//必须引入这个头文件,否则getchar()会报错

using namespace std; 

int main() {
    map<char,int>words;
    char ch;
    while ((ch=getchar()))
    {
        if(ch==‘\n‘)
        	break;
     	else
            words[ch]++;
    }
    cin>>ch;
    if((ch>=‘a‘)&&(ch<=‘z‘)) {
        cout<<words[ch]+words[ch-32]<<endl;
        //如果是小写字母,则减去32求得大写字母的数目,输出二者之和,大小写字母ASCII码相差32,且小写字母数值大
    }
    else if ((ch>=‘A‘)&&(ch<=‘Z‘)) {
        cout<<words[ch]+words[ch+32]<<endl;
    }
    //这里把大小写字符当做一个来处理
    else
        cout<<words[ch]<<endl;
        //如果不是字母输入,同样可以输出,这样使得该程序可以适应各种数据类型的字符串
    return 0;
}

  

时间: 2024-10-08 05:13:22

计算字符串个数的相关文章

抄了一个计算字符串个数的程序,一个很简单的代码。但是能看懂,也能掌握使用。原谅我菜,抽出一个小时看几段代码也好

#include<stdio.h> main() { char string[100]; int index,word=1; char blank; gets(string); if(string[0]=='\0') { printf("there is no char!\n"); } else if(string[0]==' ') { printf("first char just is a blank!\n"); } else { for(index

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方

javascript计算字符串的长度区分中英文

javascript计算字符串的长度区分中英文:计算字符串的长度是常有的操作,代码如下: var str="I love 蚂蚁部落"; console.log(str.length); 使用length计算字符串的长度,得出的结果是字符串中字符的个数,而在实际应用中可能需要计算字符串所占有的字节长度,一个汉字占两个字节,一个英文字符占一个字节,代码如下: var zfl={}; zfl.GetLength=function(str){ var realLength=0,len=str.

【JavaScript】计算字符串的长度

定义: functionGetChineseCount(str) { varchinieseCount=0; varbadChar="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; badChar+="abcdefghijklmnopqrstuvwxyz"; badChar+="0123456789"; badChar+=""+" ";//半角与全角空格 badChar+="`[emai

C# 计算字符串的哈希值(MD5、SHA)

一.关于本文 本文中是一个类库,包括下面几个函数: 1)计算32位MD5码(大小写):Hash_MD5_32 2)计算16位MD5码(大小写):Hash_MD5_16 3)计算32位2重MD5码(大小写):Hash_2_MD5_32 4)计算16位2重MD5码(大小写):Hash_2_MD5_16 5)计算SHA-1码(大小写):Hash_SHA_1 6)计算SHA-256码(大小写):Hash_SHA_256 7)计算SHA-384码(大小写):Hash_SHA_384 8)计算SHA-512

栈的应用--计算字符串表达式

计算机的本质工作就是做数学运算,那计算机可以读入字符串"1+2+3+4+5+6+7"并计算值吗? 答案是肯定的. 这里我基本实现了个位数的加减乘除,当然这个算法最简单的解决方式是采用二叉树(后面会实现~),这里作出了栈的实现方式. 首先引入两个概念: 中缀表达式和后缀表达式 1,在生活中我们通常书写1+1的时候都会写成1+1,废话~,这就是中缀表达式,更符合人们的思维习惯与想法. 2,所谓后缀表达式就是将运算符写在操作数的后面,这样更符合计算机的思维. 举例: 5 + 3       

计算字符串长度,加车头

计算字符串长度,加车头.切换到IE模式下使用 0

C# 计算字符串在控制台中的显示长度

C# 计算字符串在控制台中的显示长度? 警告 您当前查看的页面是未经授权的转载! 如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/csharp-calculate-string-display-length.html 提示 更新时间:2016年01月09日. 本作品由勤奋的小孩创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可. 欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接( http

Javascript 计算字符串所占字节数

最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的.而Unicode的实现有N种,其中用的最多的就是UTF-8和UTF-16.因此本文只对这两种编码进行讨论. 下面这个定义摘自维基百科(http://zh.wikipedia.org/zh-cn/UTF-8),做了部分删减. UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,可以表示Unicode