成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【字符串處理算法】最長連續字符及其出現次數的算法設計及C代碼實現

開發 開發工具 算法
今天主要講講最長連續字符及其出現次數的算法設計及C代碼實現。

一、需求描述

輸入一個字符串,編寫程序找出這個字符串中的最長連續字符,并求出其連續出現的次數。

例如,“123444445”中的最長連續字符是4,其連續出現的次數為5;“abcddef”中的最長連續字符是d,其連續出現的次數為2;“ab”中的最長連續字符是a,其連續出現的次數為1。

代碼

二、算法設計

我們可以采取逐個比較字符串中各個字符的辦法來獲取最長連續字符及其連續出現的次數。程序的總體流程如圖1所示。

圖1 程序的總體流程

三、特殊流程考慮

在編寫程序的過程中,我們要對輸入的字符串的長度及格式多做考慮,如:

1.如果輸入的字符串中含有空格,那么我們只處理空格之前的字符串。

2.輸入的字符串中可以包含數字、字母及一些特殊的字符,但不能包含中文字符。

四、程序代碼

  1. /********************************************************************** 
  2. * 版權所有 (C)2016, Zhou Zhaoxiong。 
  3. * 文件名稱: LongestContinChars.c 
  4. * 文件標識: 無 
  5. * 內容摘要: 尋找一個字符串中最長連續字符及其個數 
  6. * 其它說明: 例如, "aabbbc"的最長連續字符為b, 個數為3 
  7. * 當前版本: V1.0 
  8. * 作    者: Zhou Zhaoxiong 
  9. * 完成日期: 20160316 
  10. **********************************************************************/ 
  11. #include <stdio.h> 
  12.  
  13. // 重新定義數據類型 
  14. typedef signed   char  INT8; 
  15. typedef          int   INT32; 
  16. typedef unsigned int   UINT32; 
  17.  
  18. // 函數聲明 
  19. void GetLongestContinChars(INT8 *pszInputStr); 
  20.  
  21.  
  22. /********************************************************************** 
  23. * 功能描述: 主函數 
  24. * 輸入參數: 無 
  25. * 輸出參數: 無 
  26. * 返 回 值: 0-執行成功   其它-執行失敗 
  27. * 其它說明: 無 
  28. * 修改日期        版本號     修改人            修改內容 
  29. * --------------------------------------------------------------------- 
  30. * 20160316        V1.0     Zhou Zhaoxiong        創建 
  31. ***********************************************************************/ 
  32. INT32 main() 
  33.     INT8   szInputStr[100] = {0}; 
  34.     UINT32 iPosFlag        = 0
  35.      
  36.     printf("Please input the string: \n"); 
  37.     scanf("%s", szInputStr); 
  38.     printf("InputStr=%s\n", szInputStr); 
  39.  
  40.     // 先判斷是否有中文字符 
  41.     for (iPosFlag = 0; iPosFlag < strlen(szInputStr); iPosFlag ++) 
  42.     { 
  43.         if (szInputStr[iPosFlag] < 0)     // 小于0則表示含有中文字符 
  44.         { 
  45.             printf("%s has Chinese character, please check!\n", szInputStr); 
  46.             return -1; 
  47.         } 
  48.     } 
  49.  
  50.     // 再調用函數獲取最長連續字符及其個數 
  51.     GetLongestContinChars(szInputStr); 
  52.  
  53.     return 0; 
  54.  
  55.  
  56. /********************************************************************** 
  57. * 功能描述: 獲取連續出現次數最多的字符及其連續出現次數 
  58. * 輸入參數: pszInputStr-輸入字符串 
  59. * 輸出參數: 無 
  60. * 返 回 值: 無 
  61. * 其它說明: 無 
  62. * 修改日期        版本號     修改人            修改內容 
  63. * --------------------------------------------------------------------- 
  64. * 20160316        V1.0     Zhou Zhaoxiong        創建 
  65. ***********************************************************************/ 
  66. void GetLongestContinChars(INT8 *pszInputStr) 
  67.     INT8   cCompareChar       = '\0'
  68.     INT8   cLongestContinChar = '\0'
  69.     UINT32 iMaxLen            = 1
  70.     UINT32 iCharCount         = 1
  71.     UINT32 iPosFlag           = 0
  72.      
  73.     if (pszInputStr == NULL) 
  74.     { 
  75.         return; 
  76.     } 
  77.  
  78.     cCompareChar       = pszInputStr[0];  // 從***個字符開始比較 
  79.     cLongestContinChar = pszInputStr[0]; 
  80.  
  81.     for (iPosFlag = 1; iPosFlag < strlen(pszInputStr); iPosFlag ++)  
  82.     { 
  83.         if (pszInputStr[iPosFlag] == cCompareChar)  
  84.         { 
  85.             iCharCount ++;     // 對相同字符計數加1 
  86.         }  
  87.         else  
  88.         { 
  89.             iCharCount   = 1;                       // 字符不同時計數變為1 
  90.             cCompareChar = pszInputStr[iPosFlag];   // 重新比較新字符 
  91.         } 
  92.          
  93.         if (iCharCount > iMaxLen)   // 獲取連續出現次數最多的字符及其出現次數 
  94.         { 
  95.             iMaxLen            = iCharCount
  96.             cLongestContinChar = pszInputStr[iPosFlag]; 
  97.         } 
  98.     } 
  99.   
  100.     printf("連續出現次數最多的字符是: %c\n連續出現的次數是: %d\n", cLongestContinChar, iMaxLen); 

五、程序測試

我們將編寫好的程序“LongestContinChars.c”上傳到Linux機器,并使用“gcc -g -oLongestContinChars LongestContinChars.c”命令對該程序進行編譯,生成“LongestContinChars”文件。下面對程序進行詳細的測試。

1.輸入字符串為“ababbba”時,程序運行情況如下:

  1. Please input the string: 
  2. ababbba 
  3. InputStr=ababbba 
  4. 連續出現次數最多的字符是: b 
  5. 連續出現的次數是: 3 

2.輸入字符串為“123321”時,程序運行情況如下:

  1. Please input the string: 
  2. 123321 
  3. InputStr=123321 
  4. 連續出現次數最多的字符是: 3 
  5. 連續出現的次數是: 2 

3.輸入字符串為“!@##$%”時,程序運行情況如下:

  1. Please input the string: 
  2. !@##$% 
  3. InputStr=!@##$% 
  4. 連續出現次數最多的字符是: # 
  5. 連續出現的次數是: 2 

4.輸入字符串為“abcdef”時,程序運行情況如下:

  1. Please input the string: 
  2. abcdef 
  3. InputStr=abcdef 
  4. 連續出現次數最多的字符是: a 
  5. 連續出現的次數是: 1  

5.輸入字符串為“我們123”時,程序運行情況如下:

  1. Please input the string: 
  2. 我們123 
  3. InputStr=我們123 
  4. 我們123 has Chinese character, please check! 

六、需求擴展

基于本文中的需求和程序,我們可考慮對需求進行以下擴展:

1.不區分字母的大小寫,即如果輸入的字符串為“AAAaaa”,那么程序輸出最長連續字符為A或a,出現次數為6。

2.不限制字符串中不能出現中文字符,即如果輸入的字符串為“窩窩頭123”,那么程序輸出最長連續字符為窩,出現次數為2。

【本文是51CTO專欄作者周兆熊的原創文章,作者微信公眾號:周氏邏輯(logiczhou)】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2016-12-30 13:32:24

字符串算法代碼

2016-12-29 15:58:00

字符串子串算法

2016-12-29 17:14:41

回文串算法代碼

2016-12-30 13:16:51

字符串算法代碼

2016-12-30 13:37:50

字符串算法代碼

2016-12-29 16:25:32

字符串算法代碼

2023-02-26 22:33:32

字符串排列算法

2009-08-11 10:26:49

C#算法C#字符串反轉

2021-09-02 09:22:13

算法無重復字符

2013-05-06 10:54:08

字符串字符串匹配KMP算法

2023-12-15 10:27:01

暴力匹配算法Python字符串

2021-09-03 09:41:36

字符串時間復雜度

2023-04-11 08:54:57

字符串匹配算法

2021-11-19 09:00:24

LeetCode字符串算法

2013-05-06 10:49:21

Boyer-Moore算法字符串匹配

2021-09-10 08:31:54

翻轉字符串單詞

2010-11-26 09:51:54

MySQL字符串

2024-07-03 11:23:14

2011-04-11 17:08:16

階乘算法C++

2021-12-21 11:39:01

數據結構算法同構字符串
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久只有精品 | 91影院 | 日日夜夜天天干 | 成年人在线视频 | 日本五月婷婷 | 亚洲国产91 | 欧美日韩一区精品 | 色一阁| 一级黄色夫妻生活 | 国产一级片久久久 | 日本天天操| 亚洲视频 欧美视频 | 一区日韩 | 欧美日韩久久 | av入口| www.久久精品 | 伊人精品 | www.日韩| 国产精品久久久久久久7电影 | 精品免费在线 | 天天爽夜夜骑 | 性欧美hd| 久久久久国产一区二区三区四区 | 亚洲精品91| 精品日韩一区二区 | 美女视频黄色的 | h视频在线播放 | 日韩www | 成人欧美一区二区三区黑人孕妇 | 欧美v日韩| 91xxx在线观看 | 国产日韩欧美一区二区 | 欧美一级小视频 | 久久视频免费看 | 国产精品久久久久久久久免费丝袜 | 欧美日本在线观看 | 成人av免费播放 | 久久久久久久久99精品 | 国产中文字幕在线观看 | 成人午夜激情 | 狠狠撸在线视频 |