Friday, May 3, 2013

encode string C++

给一个string, 让把里面连续的超过3个的相同char替换成char#个数。少于3个的不变。
比如:AAABCCDDDDEEF
变成:A#3BCCD#4EEF
---------
挺简单的。。


  1. string encode(string &input){  
  2.   string output;  
  3.   if(input.empty()) return output;  
  4.   int count = 1;  
  5.   int i;  
  6.   for(i = 0; i < input.length() - 1; i++){  
  7.     if(input[i] != input[i+1]){  
  8.           if(count < 3){  
  9.               while(count-- > 0)  
  10.               output.push_back(input[i]);               
  11.          }  
  12.          else{  
  13.              output.push_back(input[i]);  
  14.              output.push_back('#');  
  15.              output.push_back(to_string(count));  
  16.          }  
  17.         count = 1;  
  18.     }  
  19.   else count++;  
  20.  }  
  21.   
  22. output.push_back(input[i]);  
  23. if(count > 1){  
  24.   output.push_back('#');  
  25.   output.push_back(to_string(count));  
  26. }  
  27. if(count == 2) output.push_back(input[i]);  
  28.   
  29. return output;  
  30. }  

No comments:

Post a Comment