スペーストーキー問題

突然ひらめきが

Run Length Encodingについて

今回も問題のポイント

符号化できる/できない

  1. 2文字ずつ取得し、
  2. 1文字目を
  3. 2文字目に該当する回数だけ繰り返す

エンコードでなく、デコード

  1. 先頭から2文字ずつ切り出してくる
  2. 2文字目を数字Xに置き換える
  3. 1文字目をX回繰り返す
  4. 次の2文字をまた取ってくる

ソースコード

#geshi(c++,number){{

#include <iostream>

#include <vector>

#include <string>

#include <fstream>

std::string decode(const std::string& rawString) {

       std::string result;
       for(int i = 0;i < rawString.length()-1;i+=2)
       {
               char a, b;
               a = rawString[i  ];
               b = rawString[i+1];
               for(int j = 0;j <= b - 'a';j++)
               {
                       result.push_back(a);
               }
       }
       return result;

}

bool isFormatAcceptable(const std::string& rawString) {

       if((rawString.length() & 1) == 1){
               return false;
       }else{
               if(rawString.length() == 0){
                       return false;
               }else{
                       return true;
               }
       }

} int main(int argc, char** argv) {

       using namespace std;
       string inputFilename;
       if(argc <= 1)
       {
               inputFilename = "./words.txt";
       }else{
               inputFilename = string(argv[1]);
       }
       ifstream inputFile(inputFilename.c_str());
       if(inputFile.is_open() == false)
       {
               cerr << "Failed to open " << inputFilename << endl;
               return -1;
       }
       cout << "Succeeded to open " << inputFilename << endl;
       do{
               string temp;
               inputFile >> temp;
               if(isFormatAcceptable(temp) == false){
                       cout << "X:" << temp << endl;
               }else{
                       cout << decode(temp) << ':' << temp << endl;
               }
       }
       while(inputFile.eof() == false);
       return 0;

} }}

入力のあるなし/複数

対応する複数の入力

対応する入力なし

追記


添付ファイル: fileSpaceTalkyEncodeDecode.png 633件 [詳細] fileSpaceTalkyEncodeDecodeSet.png 679件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-04-28 (月) 17:46:12