欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C++中字符串查找操作的兩則實(shí)例分享

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

在一個(gè)字符串中找到第一個(gè)只出現(xiàn)一次的字符
題目:

    在一個(gè)字符串中找到第一個(gè)只出現(xiàn)一次的字符。如輸入 abaccdeff,則輸出 b。

分析:

    一個(gè)字符串存儲的都是ASCII字符,其ASCII范圍不超過255。

    因此可以再創(chuàng)建一個(gè)255個(gè)元素的數(shù)組存儲字符串中字符出現(xiàn)的個(gè)數(shù)。

    通過兩次遍歷即可求得。

代碼實(shí)現(xiàn)(GCC編譯通過):

#include "stdio.h"
#include "stdlib.h"
 
//查找字符串中第一個(gè)只出現(xiàn)一次的字符
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個(gè)字符,創(chuàng)建一個(gè)255個(gè)元素的映射數(shù)組初始為0
  int asc[255] = {0};
  int i;
   
  //遍歷字符串,同時(shí)做字符的ASCII值映射到數(shù)組下標(biāo)統(tǒng)計(jì)出現(xiàn)次數(shù);
  for(i=0;str[i]!='\0';i++)
    asc[str[i]]++;
 
  //再次遍歷,找到第一個(gè)出現(xiàn)一次的字符即為所求
  for(i=0;str[i]!='\0';i++)
    if(asc[str[i]] == 1)
      return str[i];
  //否則返回空
  return '\0';
}

注:

  •     這種值映射到下標(biāo)是比較常見的一種方式,一些情況下避免了數(shù)組的遍歷。
  •     數(shù)組初始化可以使用函數(shù):void *memset(void *s, int ch, sizet n);
  •     還可以使用指針實(shí)現(xiàn)。


在字符串中找出連續(xù)最長的數(shù)字串
題目:

寫一個(gè)函數(shù),它的原形是 int continumax(char *outputstr,char *intputstr)

功能:

在字符串中找出連續(xù)最長的數(shù)字串,并把這個(gè)串的長度返回,

并把這個(gè)最長數(shù)字串付給其中一個(gè)函數(shù)參數(shù) outputstr  所指內(nèi)存。

例如:"abcd12345ed125ss123456789" 的首地址傳給 intputstr 后,函數(shù)將返回 9,

outputstr  所指的值為 123456789

題目也比較簡單,有一點(diǎn)需要注意

代碼實(shí)現(xiàn)(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'),當(dāng)字符串結(jié)尾出現(xiàn)最長數(shù)字串則無法處理
  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;
}

上一篇:C++編程異常處理中try和throw以及catch語句的用法

欄    目:C語言

下一篇:詳解C++中new運(yùn)算符和delete運(yùn)算符的使用

本文標(biāo)題:C++中字符串查找操作的兩則實(shí)例分享

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2514.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有