• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++中字符串查找操作的两则实例分享

C++中字符串查找操作的两则实例分享

作者:Zhang_H 字体:[增加 减小] 来源:互联网 时间:2017-05-28

Zhang_H 通过本文主要向大家介绍了c++查找字符串,c++输入字符串,c++输出字符串,c++定义字符串,c++获取字符串长度等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在一个字符串中找到第一个只出现一次的字符
题目:

    在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。

分析:

    一个字符串存储的都是ASCII字符,其ASCII范围不超过255。

    因此可以再创建一个255个元素的数组存储字符串中字符出现的个数。

    通过两次遍历即可求得。

代码实现(GCC编译通过):

#include "stdio.h"
#include "stdlib.h"
 
//查找字符串中第一个只出现一次的字符
char firstSingle(char * str);
 
int main(void)
{
  char str[] = "abaccdeff";
  char tmp = firstSingle(str);
  printf("%c\n",tmp);
 
  return 0;
}
 
char firstSingle(char * str)
{
  //ASCII表有255个字符,创建一个255个元素的映射数组初始为0
  int asc[255] = {0};
  int i;
   
  //遍历字符串,同时做字符的ASCII值映射到数组下标统计出现次数;
  for(i=0;str[i]!='\0';i++)
    asc[str[i]]++;
 
  //再次遍历,找到第一个出现一次的字符即为所求
  for(i=0;str[i]!='\0';i++)
    if(asc[str[i]] == 1)
      return str[i];
  //否则返回空
  return '\0';
}
</div>

注:

  •     这种值映射到下标是比较常见的一种方式,一些情况下避免了数组的遍历。
  •     数组初始化可以使用函数:void *memset(void *s, int ch, sizet n);
  •     还可以使用指针实现。


在字符串中找出连续最长的数字串
题目:

写一个函数,它的原形是 int continumax(char *outputstr,char *intputstr)

功能:

在字符串中找出连续最长的数字串,并把这个串的长度返回,

并把这个最长数字串付给其中一个函数参数 outputstr  所指内存。

例如:"abcd12345ed125ss123456789" 的首地址传给 intputstr 后,函数将返回 9,

outputstr  所指的值为 123456789

题目也比较简单,有一点需要注意

代码实现(GCC编译通过):

#include "stdio.h"
#include "stdlib.h"
 
int continumax(char * outputstr,char * inputstr);
 
int main(void)
{
  char *in = "abcd12345ed125dd123456789";
  char *out = (char *)malloc(sizeof(char)*100);
   
  int i = continumax(out,in);
 
  printf("%d\n",i);
  printf("%s\n",out);
  return 0;
}
 
int continumax(char * outputstr, char * inputstr)
{
  int len,max,i;
  char *p;
 
  len = max = 0;
 
  //若写成while(inputstr != '\0'),当字符串结尾出现最长数字串则无法处理
  while(1)
  {  
    if(*inputstr >= '0' && *inputstr <= '9')
    {
      len++;
    }
    else
    {
      if(len >max)
      {
        max = len;
        p = inputstr - len;
      }
      len = 0;
    }
    if(*inputstr++ == 0) 
      break;
  }
 
  for(i = 0;i<max;i++)
    *outputstr++ = *p ++;
 
  *outputstr = '\0';
 
  return max;
}

</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++中字符串查找操作的两则实例分享

相关文章

  • 2017-05-28C++中指向对象的常指针与指向常对象的指针详解
  • 2022-04-30C语言中的文件是什么?
  • 2017-05-28c语言程序设计文件操作方法示例(CreateFile和fopen)
  • 2017-05-28C++中typedef 及其与struct的结合使用
  • 2017-05-28C/C++ 公有继承、保护继承和私有继承的对比详解
  • 2017-05-28C++可变参数的函数与模板实例分析
  • 2017-05-28C++初始化函数列表详细解析
  • 2017-05-28深入Windows下的回车是回车换行(\r\n)还是换行回车(\n\r)的详解
  • 2017-05-28解析C++浮点数无效值的定义与无效值判定的小结
  • 2017-05-28Mac OS上搭建Apache+PHP+MySQL开发环境的详细教程

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 自己实现strcpy函数的实现方法
    • C++实现数字转换为十六进制字符串的方法
    • C++ explicit构造函数实例解析
    • C语言、C++中的union用法总结
    • 复数乘法中的结构体赋值实现代码
    • 深入解析C++中的函数模板和函数的默认参数
    • 详解C++设计模式编程中对访问者模式的运用
    • 浅析C/C++中动态链接库的创建和调用
    • C语言入门的一些基本资源推荐和程序语法概览
    • 关于C/C++中的side effect(负效应)和sequence point(序列点)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有