数据结构-字符串的统计相关操作

统计字符串的相关操作

统计字符出现次数

/*统计串S中字符的种类和个数*/
#include<cstring>
#include<iostream>
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define MAXSTRLEN 255           //用户可在255以内定义最长串长
//typedef char SString[MAXSTRLEN+1];        //0号单元存放串的长度

typedef struct{
   char ch[MAXSTRLEN+1];                //若是非空串,则按串长分配存储区,否则ch为NULL
   int length;              //串长度
}SString; 

typedef struct {
     char ch;//存放出现的字符
     int num;//出现的个数
 } mytype;
Status StrAssign(SString &T, char *chars) { //生成一个其值等于chars的串T
    int i;
    if (strlen(chars) > MAXSTRLEN)
        return ERROR;
    else {
        T.length = strlen(chars);
        for (i = 1; i <= T.length; i++)
            T.ch[i] = *(chars + i - 1);
        return OK;
    }
}
void StrAnalyze(SString S)//统计串S中字符的种类和个数
{char c;
  mytype T[20]; //用结构数组T存储统计结果
 int i,j;
 for (i=0;i<=20;i++) {T[i].ch='\0',T[i].num=0;};
  for(i=1;i<=S.length;i++)
  {
    c=S.ch[i];j=0;
    while(T[j].ch&&T[j].ch!=c) j++; //查找当前字符c是否已记录过
    if(T[j].ch) T[j].num++;
    else {T[j].ch=c;T[j].num++;}
  }//for
  for(j=0;T[j].ch;j++)
   cout<<T[j].ch<<":"<<T[j].num<<endl;
}//StrAnalyze

int  main()
{SString S;
char *T="sasdddas1111as";
StrAssign(S,T);
StrAnalyze(S);
return 0;
}

统计字符出现次数的另一种情况

/*统计串S中字符的种类和个数*/
#include<cstring>
#include<iostream>
using namespace std;

void count()//统计输入字符串中数字字符和字母字符的个数。
{ int i,num[36];
  char ch;
  for (i=0;i<36;i++) num[i]=0;
  while ((ch=getchar())!='#')
  {
  if('0'<=ch&&ch<='9')
     {i=int(ch)-48;num[i]++;}
   else if('A'<=ch&&ch<='Z')
      {i=ch-65+10;num[i]++;}}
  for(i=0;i<10;i++)
      cout<<"数字"<<i<<"的个数"<<num[i]<<endl;
  for(i=10;i<36;i++)
    cout<<"字母"<<char(i+55)<<"的个数"<<num[i]<<endl;
}
int main()
{cout<<"请输入字符串:('#'结束)";
count();
}

排正负(与本章主题无关)

#include<iostream>
using namespace std;

void Arrange(int A[],int n){
    int i= 0,j=n-1,x,k=0;
    while(i<j){
        while(i<j&&A[i]>0) i++;
        while(i<j&&A[j]<0) j--;
        if(i<j){
            x=A[i];
            A[i]=A[j];
            A[j]=x;
            i++;
            j--;
        }
    }

    while(k<n){
        cout<<A[k]<<" ";
        k++;
    }
}
int main(){
    int a[100];
    int i=0,x,n;
    cout<<"输入数组的个数:" ;
    cin>>n;
    while(i<n){
        cin>>x;
        a[i++]=x;
    }
    Arrange(a,n);

}

原文地址:https://www.cnblogs.com/ygjzs/p/11789295.html

时间: 2024-08-01 00:46:38

数据结构-字符串的统计相关操作的相关文章

python基础===【字符串】所有相关操作

#字符串的相关操作 #基本操作 #+ 字符串连接操作 str1 = '来是come走是go' str2 = '点头yes摇头no' result = str1 + str2 print(result) #* 字符串复制操作 str1 = '天地不仁以万物为刍狗' result = str1 * 3 print(result) #[] 索引操作 str1 = '柳暗花明又一村' print(str1[1]) print(str1[-2]) #[::]取片操作 str1 = '山重水复疑无路' #获

OJ中字符串输入及相关操作

1.     输入数据方式 cin>>a>>b; char a[10]; cin.getline(a,5); char a,b,c; cin.get(a);cin.get(b);cin.get(c); 输入: AB CD 那么a的值为'A',b的值为'B',c的值为'\n\ getline(istream &in, string &s) 在头文件<iostream>中声明了getline函数: istream::getline istream&g

Python字符串和字典相关操作

字符串操作: 字符串的 % 格式化操作: str = "Hello,%s.%s enough for ya ?" values = ('world','hot') print str % values 输出结果: Hello,world.hot enough for ya ? 模板字符串: #coding=utf-8 from string import Template ## 单个变量替换 s1 = Template('$x, glorious $x!') print s1.subs

字符串包含 截取相关操作

// 获取字符串 可口可乐 和 18967839006 infoStr = @"[接渡镇合作点]快件交给可口可乐,正在派送途中(联系电话:18967839006)"; if([infoStr rangeOfString:@"快件交给"].location !=NSNotFound) { NSRange range = [infoStr rangeOfString:@"给"];//匹配得到的下标 NSLog(@"rang:%@"

JS中字符串的相关操作

(转自:http://www.cnblogs.com/zhaoxinxin/articles/1402733.html) 一.字符串的创建 创建一个字符串有几种方法. 最简单的是用引号将一组字符包含起来,可以将其赋值给一个字符串变量. var myStr = "Hello, String!"; 可以用双引号或单引号将字符串包含,但要注意,作为界定字符串的一对引号必须是相同的,不能混用. 像var myString = "Fluffy is a pretty cat.'; 这样

python字符串格式化输出及相关操作代码举例

字符串的格式化 Python 支持格式化字符串的输出 .尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中.在   Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法. 在python中格式化输出字符串通用的形式为: 格式标记字符串 % 要输出的值组 其中,左边部分的"格式标记字符串"可以完全和c中的一致.右边的"值组"如果有两个及以上的值则需要用小括号括起来,中间用逗号隔开. 重点来看左

DateTimeHelper【日期类型与字符串互转以及日期对比相关操作】

版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 实现日期和字符串之间的转换以及日期的相关操作: 1.日期格式的字符串输出为Date类型: 2.将Date类型以指定格式输出: 3.将日期格式的字符串以指定格式输出: 4.将时间戳转化为固定格式的日期字符串 : 5.将时间戳转化为指定格式日期的字符串: 6.当前时间提前一个月: 7.当前时间延后一个月: ...... 效果图 暂不需要 代码分析 注意:new SimpleDateFormat的构造函数中必须含有Locale.CHINA或者

【数据结构】字典树/Trie树/前缀树 - 字符串的统计、排序和保存

字典树 描述 字典树,又称单词查找树.Trie树.前缀树,是一种树形结构,是一种哈希树的变种. 典型应用是用于统计.排序和保存大量的字符串(但不仅限于字符串). 常见操作有插入和查找,删除操作少见. 性质 根节点不包含字符 除根节点外每一个节点都只包含一个字符 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串 每个节点的所有子节点包含的字符都不相同 优点 利用字符串的公共前缀来减少查询时间 最大限度地减少无谓的字符串比较 查询效率比哈希树高 自带字典序排序 直接判断重复,或者记

Scala学习(三)----数组相关操作

数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不关心其他选择,而只是想马上开始用数组.本篇的要点包括: 1. 若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer 2. 提供初始值时不要使用new 3. 用()来访问元素 4. 用for (elem<-arr)来遍历元素 5. 用for (elem<-arr if…)…yie