欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年02月04日 15:10:22   作者:Zhang_H  
這篇文章主要介紹了C++中字符串的查找操作的兩則實例分享,分別是找到第一個只出現(xiàn)一次的字符以及找出連續(xù)最長的數(shù)字串的方法,需要的朋友可以參考下

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

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

分析:

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

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

    通過兩次遍歷即可求得。

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

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

注:

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


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

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

功能:

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

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

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

outputstr  所指的值為 123456789

題目也比較簡單,有一點需要注意

代碼實現(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;
}

相關(guān)文章

  • C++、Qt分別讀寫xml文件的方法實例

    C++、Qt分別讀寫xml文件的方法實例

    Qt提供了QDomElement 類用于完成對xml文件的讀取和寫入,這篇文章主要給大家介紹了關(guān)于C++、Qt分別讀寫xml文件的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • C++ const關(guān)鍵字分析詳解

    C++ const關(guān)鍵字分析詳解

    C++中的const關(guān)鍵字的用法非常靈活,而使用const將大大改善程序的健壯性。這篇文章主要介紹了C/C++ 中const關(guān)鍵字的用法,需要的朋友可以參考下
    2021-08-08
  • C語言結(jié)構(gòu)體的全方面解讀

    C語言結(jié)構(gòu)體的全方面解讀

    C 數(shù)組允許定義可存儲相同類型數(shù)據(jù)項的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲不同類型的數(shù)據(jù)項
    2021-10-10
  • 教你使用Matlab制作圖形驗證碼生成器(app designer)

    教你使用Matlab制作圖形驗證碼生成器(app designer)

    這篇文章主要和大家分享如何利用Matlab制作一款圖形驗證碼生成器,文中的實現(xiàn)步驟講解詳細,感興趣的小伙伴可以跟隨小編動手試一試
    2022-02-02
  • C++之boost::array的用法

    C++之boost::array的用法

    這篇文章主要介紹了C++之boost::array的用法,以實例的形式簡單講述了靜態(tài)數(shù)組的容器boost::array的使用技巧,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C++實現(xiàn)迷宮算法實例解析

    C++實現(xiàn)迷宮算法實例解析

    這篇文章主要介紹了C++實現(xiàn)迷宮算法實例解析,是一個比較經(jīng)典的C++算法,有一定的學(xué)習(xí)與借鑒價值,需要的朋友可以參考下
    2014-07-07
  • C語言動態(tài)開辟內(nèi)存詳解

    C語言動態(tài)開辟內(nèi)存詳解

    這篇文章主要為大家詳細介紹了C語言動態(tài)開辟內(nèi)存,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • QT編寫tcp通信工具(Client篇)

    QT編寫tcp通信工具(Client篇)

    這篇文章主要介紹了QT編寫tcp通信工具,適用于Client端,類似網(wǎng)上常見的網(wǎng)絡(luò)調(diào)試工具,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 用C++實現(xiàn)一個鏈式棧的實例代碼

    用C++實現(xiàn)一個鏈式棧的實例代碼

    本篇文章是對使用C++實現(xiàn)一個鏈式棧的代碼進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • OpenCV 圖像金字塔的實現(xiàn)示例

    OpenCV 圖像金字塔的實現(xiàn)示例

    本文將結(jié)合實例代碼,介紹OpenCV 圖像金字塔,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06

最新評論