程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 轉換字符串格式為原來字符串裡的字符+該字符連續出現的個數

轉換字符串格式為原來字符串裡的字符+該字符連續出現的個數

編輯:C++入門知識

[cpp]
/************************************************************************
轉換字符串格式為原來字符串裡的字符+該字符連續出現的個數,
例如:1233422222 轉換為1121324125(1出現1次,2出現1次,3出現2次...... 
*************************************************************************/ 
#include<iostream>   
#include<cstring>  
#include<cstdlib>  
using namespace std;  
void convert(char input[],char output[])  
{  
       
    int count = 1;  
    char *fast = input;  
    char *slow = input;  
  
    while(*(++fast)!='\0')  
    {  
        if(*fast == *slow)//如果當前讀入的字符和正在統計的一樣,那麼出現次數要++   
        {  
            count++;  
            continue;  
        }  
        // 當快慢指針不同時就執行下邊語句  
        if(slow<fast)  //注意不能寫成while 形式 因為要求重復的數字只出現一次  
        { 
            *output++=*slow++;   
        } 
        *output++=count+'0';  //將出現次數添加至數字後邊  
        slow = fast;  //  慢指針指向快指針 重新統計  
        count = 1;  //計數器重置為初始值  
    }  
    *output++=*slow;  // 快指針跳出循環時慢指針仍沒有跳出循環但是count計數正確  
    *output++=count+'0';//因為讀到'\0'循環退出,最後一個連續的字符序列沒有輸出,所以在這裡追加輸出   
    *output='\0'; 
}  
int main() 

    char input[]="1233422222"; 
    char output[30]={0}; 
    convert(input,output); 
    cout<<"output is "<<output<<endl; 

  

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