程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中字符串查找操作的兩則實例分享

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

編輯:關於C++

C++中字符串查找操作的兩則實例分享。本站提示廣大學習愛好者:(C++中字符串查找操作的兩則實例分享)文章只能為提供參考,不一定能成為您想要的結果。以下是C++中字符串查找操作的兩則實例分享正文


在一個字符串中找到第一個只湧現一次的字符
標題:

    在一個字符串中找到第一個只湧現一次的字符。如輸出 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';
}

注:

  •     這類值映照到下標是比擬罕見的一種方法,一些情形下防止了數組的遍歷。
  •     數組初始化可使用函數: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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved