c语言程序统计一个字符串中子串ab出现的次数

合集下载

统计字符在字符串中出现的次数

统计字符在字符串中出现的次数

统计字符在字符串中出现的次数统计字符在字符串中出现的次数⽅式1:在map集合中进⾏if-else判断public class Demo01 {public static void main(String[] args) {//统计字符在字符串中出现的次数;String str = "qwerqqqqqqweqweeeewqq";Map<Character, Integer> map = new HashMap<>();//对字符串进⾏遍历;for (int i = 0; i < str.length(); i++) {// charAt:根据索引寻找字符char c = str.charAt(i);//判断是否包含指定的字符;if (!map.containsKey(c)) {//若不包含就存⼊map中;map.put(c, 1);} else {//若包含则加出现次数+1;map.put(c, map.get(c) + 1);}}System.out.println(map);//输出结果:{q=10, r=1, e=6, w=4}}}⽅式2:通过字母的ascll码相减,统计次数public class Demo01 {public static void main(String[] args) {//统计字符在字符串中出现的次数;String str = "qwerqqqqqqweqweeeewqq";//⽅式2://由于每个字母都有着对应的ascll码;创建长度为26的数组;int[] counts = new int[26];//对字符串进⾏遍历;for (int i = 0; i < str.length(); i++) {// charAt:根据索引寻找字符char c = str.charAt(i);//让拿到的每个字母;去减第⼀个字母的值;(实际上有隐式的ascll码相减);//减出来的值就相当于拿到⼀次;每减⼀次就加⼀次,最终会把叠加的次数计⼊数组;counts[c - 'a']++;}//遍历数组;for (int array : counts) {System.out.print(array + " ");}//计算结果:0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 10 1 0 0 0 0 4 0 0 0}}。

实验报告:统计字符串中子字符串出现的次数

实验报告:统计字符串中子字符串出现的次数

实验报告:统计字符串中⼦字符串出现的次数实验报告源程序:1 #include<iostream>2 #include<cstring>3using namespace std;4int cntstring(char *source,char *substr);5void main()6 {7char str1[50],str2[20]; //str1 为主字符串,str2 为⼦字符串8 cout<<"input source string:";9 cin.getline(str1,50);10 cout<<"input sub string:";11 cin.getline(str2,20);12 cout<<"Occurs:"<<cntstring(str1,str2)<<endl;13 }14int cntstring(char *source,char *substr)15 {16int sum=0; //统计⼦字符串数量初值为017char *p1=source,*p2=substr;18while(*p1 !='\0') //主字符串没有结束19 {20if(*p1 == *p2) //第⼀个字符相同21 {22while(*p1 == *p2 && *p2 !='\0') //循环⽐较后续字符23 {24 p1++;p2++; //⼦字符串没有结束,两字符串同事后移⼀个字符25 }2627 }28else29 {30 p1++; //主字符串后移,重新⽐较31 }3233if(*p2 == '\0')34 sum++;35 p2=substr; //字字符串出现⼀次,指针重新指向⼦字符串36 }3738return sum; //返回统计结果39 }提⽰:主函数使⽤cin.getline读⼊主字符串和⼦字符串。

C语言与汇编的嵌入式编程:统计字符串中各字符出现的次数

C语言与汇编的嵌入式编程:统计字符串中各字符出现的次数

C语⾔与汇编的嵌⼊式编程:统计字符串中各字符出现的次数原始C语⾔:#include<stdio.h>void main(){char str[1024];char pipei[] = "abcdefghijklmnopqrstuvwxyz";int count[26]={0};int i=0,j=0;scanf("%s",str);printf("%s\n",str);for(i=0;i<1024;i++){for(j=0;j<26;j++){if(str[i]==pipei[j])count[j]+=1;}}for(j=0;j<26;j++){if(count[j]>0)printf("%c=%d\n",pipei[j],count[j]);}}加⼊汇编后代码:#include<stdio.h>void main(){char str[1024];char pipei[] = "abcdefghijklmnopqrstuvwxyz";int count[26]={0};int i=0,j=0;scanf("%s",str);printf("%s\n",str);//外层循环start_asm{mov eax,0//i=0mov ecx,1024//i<1024loop1:mov i,eaxpush eaxpush ecx};//printf("%c\t",str[i]);//内层循环start_asm{mov eax,0mov ecx,26loop2:mov j,eaxpush eaxpush ecx};if(str[i]==pipei[j]){count[j]+=1;}//内循环end__asm{pop ecxpop eaxadd eax,1loop loop2};pop ecxpop eaxadd eax,1loop loop1};//输出统计个数//外层循环start_asm{mov eax,0//i=0mov ecx,26//i<26loop3:mov j,eaxpush eaxpush ecx};if(count[j]>0)printf("%c=%d\n",pipei[j],count[j]);//外循环end_asm{pop ecxpop eaxadd eax,1loop loop3};}后⾯有时间再优化了。

字符串中每个字符出现的次数

字符串中每个字符出现的次数

字符串中每个字符出现的次数
要计算一个字符串中每个字符出现的次数,可以使用一个字典来记录每个字符和对应的出现次数。

首先,我们可以初始化一个空的字典来存储字符和对应的出现次数:
```
char_counts = {}
```
然后,对于字符串中的每个字符,我们可以遍历它们并更新字典中对应字符的计数:
```python
for char in string:
if char in char_counts:
char_counts[char] += 1
else:
char_counts[char] = 1
```
最后,我们可以打印输出字典中的结果:
```python
for char, count in char_counts.items():
print(char, count)
```
下面是完整的代码示例:
```python
string = "Hello, World!"
char_counts = {}
for char in string:
if char in char_counts:
char_counts[char] += 1
else:
char_counts[char] = 1
for char, count in char_counts.items(): print(char, count)
```
运行后的输出将是:
```
H 1
e 1
l 3
o 2
, 1
1
W 1
r 1
d 1
! 1
```。

C#统计字符串中某字符串出现次数示例

C#统计字符串中某字符串出现次数示例

C#统计字符串中某字符串出现次数示例在C#中要统计一个字符出现在字符串中的次数我们有N种实现方法,下面我总结了几种统计字符串出现资次数实例与大家分享。

例1例2 哈希表代码如下复制代码Hashtable ht = new Hashtable();string sr = "aaabbcddddd";char[] cr = sr.ToCharArray();foreach (char ch in cr){if (ht.ContainsKey(ch)){int i = (int)ht[ch];ht.Remove(ch);ht.Add(ch, ++i);}elseht.Add(ch, 1);}foreach (DictionaryEntry dicEntry in ht){Console.WriteLine("{0}出现{1}次", dicEntry.Key, dicEntry.Value);}ArrayList alist = new ArrayList(ht.Values);alist.Sort();object o = (object)alist[alist.Count - 1];foreach (DictionaryEntry dicEntry in ht){if (dicEntry.Value == o){string str = dicEntry.Key.ToString();Console.WriteLine("出现次数最多的字符:{0},共{1}次", str, o.ToString());break;}}Console.ReadLine();例3 linq}var ccc = c.GroupBy(e => e).OrderByDescending(e => e.Count()).First().ToList();Console.WriteLine("{0}出现{1}次!", ccc[0].ToString(), ccc.Count().ToString());Console.ReadKey();在C#中要统计一个字符出现在字符串中的次数我们有N种实现方法,下面我总结了几种统计字符串出现资次数实例与大家分享。

C语言程序设计实验指导书答案

C语言程序设计实验指导书答案

实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。

2.熟悉编译环境Visual C++或者Dev C++或者Turbo /。

3.初步熟悉C语言程序的语法规定。

4.了解简单函数的使用方法。

实验内容:1.编程且上机运行:求3个整数的和。

2.编程且上机运行:求2个数的和、差、积和商。

3.编程且上机运行:输入3个数,求最大值。

4.编程且上机运行:输入圆的半径,求圆的面积和周长。

5.在屏幕上输出:“hello world!”6.输入并编辑本章中给出的C程序例子,在自己用的环境中形成一个C语言源程序文件;对这个源程序进行加工,得到对应的可执行程序,看一看它的效果。

实验结果:1.#include <>#include <>main( ){ int i,j,k;printf("input i,j,k:");#include <>#include <>main( ){ int i,j;printf("input i,j(not 0):");#include <>#include <>main( ){ int i,j,k;printf("input i,j,k:");#include <>#include <>#define pimain( ){ float r;printf("input r:");scanf("%f",&r);#include <>#include <>#define pimain( ){printf("hello world!");system("Pause");}6.略实验二(第3章实验一)实验目的:理解C语言的类型系统。

字符串中各个字母出现的次数

字符串中各个字母出现的次数

字符串中各个字母出现的次数在日常生活中,我们经常需要对字符串(一串字符)进行分析和处理。

其中,一个常见的问题是统计字符串中各个字母出现的次数。

接下来我们就来探讨一下这个问题。

首先,我们需要明确一个概念,即什么是字母。

在常见的编码方法中,字母可以用ASCII码表示。

ASCII码是一种用来表示字符的编码方式,其中,大写字母A对应的编码是65,小写字母a对应的编码是97,大写字母Z对应的编码是90,小写字母z对应的编码是122。

在Unicode编码中,一个字符通常用两个字节来表示,而在UTF-8编码中,一个字符的长度不固定,最少需要1个字节。

有了这些基础知识,我们就可以开始统计字符串中各个字母出现的次数了。

一个简单的思路是使用一个数组,其中每个元素代表一个字母,数组的值表示该字母出现的次数。

具体操作可以分为以下几个步骤:1. 输入一个字符串。

2. 遍历字符串的每个字符。

3. 如果该字符是字母,则将对应数组元素加1。

4. 遍历完字符串后,可以输出每个字母出现的次数,也可以将字母和对应的出现次数存储到一个字典中,以便后续使用。

下面是一个示例代码,使用Python语言实现上述思路:```s = input('请输入一个字符串:')cnt = [0] * 26 # 26个字母for c in s:if c.isalpha(): # 判断是否是字母index = ord(c.lower()) - ord('a')cnt[index] += 1for i in range(26):if cnt[i] > 0:print(chr(ord('a')+i) + ': ' + str(cnt[i]) + '次') ```在这个示例代码中,我们使用一个长度为26的数组cnt来存储每个字母出现的次数。

在遍历字符串时,我们使用了字符串的isalpha()方法判断是否是字母,并使用ord()函数将字符转换为对应的ASCII码,从而计算出该字母在数组中的下标。

字符串中每个字母出现的次数 -回复

字符串中每个字母出现的次数 -回复

字符串中每个字母出现的次数-回复题目: 字符串中每个字母出现的次数导语:字符串是计算机编程中常见的数据类型之一,它可以存储文本和字符信息。

在字符串中,每个字母都有可能出现多次。

本文将详细介绍如何统计字符串中每个字母的出现次数,并提供具体步骤和示例。

第一步: 理解问题在统计字符串中每个字母的出现次数之前,我们需要明确问题的具体要求和范围。

一般情况下,字符串中的字母是指英文字母,不包括数字和特殊字符。

同时,我们假设字符串是不区分大小写的,即相同的字母无论是大写还是小写,都被视为相同的字符。

第二步: 定义数据结构为了统计每个字母的出现次数,我们可以使用一个数据结构来存储字母和对应的计数。

一种常见的选择是使用字典(dictionary)或映射(map)数据结构,其中字母作为键,计数作为值。

第三步: 字符串转换为小写由于问题中规定了字符串是不区分大小写的,为了简化处理,我们将字符串中的所有字母转换为小写形式。

这样可以确保相同字母的大小写形式被视为相同的字符。

第四步: 遍历字符串并统计次数接下来,我们需要遍历整个字符串,对每个字母进行计数。

遍历可以使用循环结构,通过逐个取出字符的方式实现。

在遍历过程中,我们会判断字符是否为字母,并更新字母的计数。

第五步: 输出结果在遍历完成后,我们将字母和对应的计数输出。

可以按照字母的顺序输出,也可以按照计数的大小进行排序后输出。

以下是一个具体的代码实现示例:def count_letters(string):# 步骤2: 定义数据结构letter_count = {}# 步骤3: 字符串转换为小写string = string.lower()# 步骤4: 遍历字符串并统计次数for char in string:# 判断字符是否为字母if char.isalpha():# 更新字母的计数if char in letter_count:letter_count[char] += 1else:letter_count[char] = 1# 步骤5: 输出结果for letter, count in sorted(letter_count.items()): print(letter, ":", count)# 示例字符串string = "Hello World"count_letters(string)输出结果:d : 1e : 1h : 1l : 3o : 2r : 1w : 1结论:本文详细介绍了如何统计字符串中每个字母的出现次数。

C语言从主字符串中查询某字符串出现的次数

C语言从主字符串中查询某字符串出现的次数
/*
比如str:dog do gdolgd ogdogfdog
substr:dog
把str划分第一次:dog。与substr逐个比较
第二次:og (第三个是字符)。与substr逐个比较
第三次:g d(第二个是空格)。与substr逐个比较
…………
*/
int i,j,len1,len2,m=0,n=0;
{
if(str[m++]!=substr[j])//要是出现一个不相等则推出循环,即一一对应
break;
if(m>=i+len2)//只有当m大于等于i+len2才算全部相等
n++;
}
}
return n;
}
从主字符串中查询要查找的字符串次数:主要思想是想把主字符串分割与查询字符串一一对应。
#include <stdio.h>
#include <string.h>
int fun(char *str, char *substr)
{
//把主字符串的str从第一个一次划分同substr的长度的临时字符串,一一比较
len1=strlen(str);//len1是主字符串的长度
len2=strlen(substr);//len2是查询的字符串的长度
if(len1<len2)
return 0;
for(i=0;i<=len1-len2;i++)//只要查询到len1-len2
{
m=i;//每次把i的值赋给m做初值
for(j=0;j<len2j++)

字符串中每个字母出现的次数

字符串中每个字母出现的次数

字符串中每个字母出现的次数
以下是两种常见的方法来统计字符串中每个字母出现的次数:
方法一:采用 HashMap
1. 将字符串转化为字符数组。

2. 创建一个 HashMap,将每个字符作为键,出现的次数作为值。

3. 循环遍历字符数组,如果字符不存在于 HashMap 中,则将其加入并将值初始化为 1。

否则,将对应的值加 1。

4. 循环遍历 HashMap 中的键,按字母表顺序输出每个字母及其出现的次数。

方法二:创建26个空间大小的数组,分别存储26个字母。

遍历字符串中的每个字符,将其转换为 ASCII 码。

如果字符在'a'至'z'之间(包括'a'和'z'),则将对应的数组元素加 1。

最后,循环遍历数组,输出每个字母及其出现的次数。

你可以根据实际需求选择适合的方法来统计字符串中每个字母出现的次数。

如果你还有其他问题,请随时向我提问。

统计子串出现次数

统计子串出现次数

数据结构实验报告1、问题描述设计算法,计算一个子串在一个字符串中出现的次数,如果字符串中不存在该子串,计次数为0.2、基本要求(1)设计获取字符串及子串的方法。

(2)设计算法统计子串在字符串中出现的次数。

(3)输入:字符串与子串。

(4)输出:字符串、子串及子串在字符串中出现的次数。

3.数据结构设计typedef struct{char *ch;int length;}hstring;4.串的基本操作status strassign(hstring *t,char *cha)//串分配函数{char *c;int i,j;for(i=0,c=cha;*c;++i,++c);if(!i){t->ch=NULL;t->length=0;}else{if(!(t->ch=(char*)malloc(i*sizeof(char)))) exit (0);for(j=0;j<i;j++)*(t->ch+j)= *(cha+j);t->length=i;}return 1;}int strcompare(hstring *s,hstring *t)//串比较函数{int i;for(i=0;i<(s->length)&&i<(t->length);++i)if(s->ch[i]!=t->ch[i]) return s->ch[i]-t->ch[i];return s->length-t->length;}status concat(hstring *t,hstring s1,hstring s2)//串连接函数{int i,j;t->length=s1.length+s2.length;if(!(t->ch=(char*)malloc(t->length*sizeof(char)))) exit (0);for(i=0;i<s1.length;i++)*(t->ch+i)=*(s1.ch+i);for(j=0;j<s2.length;j++)*(t->ch+i+j)=*(s2.ch+j);return 1;}status substring(hstring *sub,hstring s,int pos,int len) //求子串{int i;if(pos<1||pos>s.length||len<0||len>s.length-pos+1){sub->length=0;sub->ch=NULL;return 0;}if(!len){sub->ch=NULL;sub->length=0;}else{if(!(sub->ch=(char*)malloc(len*sizeof(char)))) exit (0);for(i=0;i<len;i++)*(sub->ch+i)=*(s.ch+pos-1+i);sub->length=len;}return 1;}status printstring(hstring s){int i;if(!s.ch) {printf("over the zone\n"); return 0;}for(i=0;i<s.length;i++)printf("%c",*(s.ch+i));printf("\n");return 1;}5.求子串个数status countstring(hstring s,hstring sd,int *sum) {int i,j;*sum=0;if((s.length-sd.length)<0){printf("error\n");return 0;}for(i=0;i<(s.length-sd.length+1);i++){for(j=0;j<sd.length;j++)if(*(s.ch+i+j)!=*(sd.ch+j))break;if(j==(sd.length)){(*sum)++;}}return 1;}6.实验结果7.心得与体会这个算法本身并不复杂,可是最后结果我的算法开销很大,占用了很大的cpu资源,运行起来很卡,应当继续改进算法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档