繰り返し文字のカウントを使用して文字列圧縮を実行するプログラムを作成しました。 C++でのプログラムは次のとおりです。std :: string不適切な値を返す
#include<iostream>
#include<cstring>
std::string compressBad(std::string str)
{
std::string mystr = "";
int count = 1;
char last = str[0];
for (int i = 0; i < str.length();++i)
{
if(str[i] == last)
count++;
else
{
std::string lastS = last+"";
std::string countS = std::to_string(count);
mystr.append(lastS);
mystr.append(countS);
//mystr = mystr + last + count;
count = 1;
last = str[i];
}
}
std::string lastS = last+"";
std::string countS = std::to_string(count);
mystr.append(lastS);
mystr.append(countS);
return mystr;
//return mystr+last+count;
}
int main()
{
std::string str;
std::getline(std::cin, str);
std::string str2 = compressBad(str);
std::cout<<str2;
/*if (str.length() < str2.length())
std::cout<<str;
else
std::cout<<str2;*/
std::cout<<std::endl;
return 0;
}
少数の例でこれを実行するには、次のとおりです。私はまた、Javaで同じコンセプトを実装し、そこにそれが働いている
Input : sssaaddd
Output: ùÿÿ*423
Output it should print : s3a2d3
:
Input : sssaaddddd
Output : ùÿÿ*425
Output it should print : s3a2d5
第二の例良い。 Javaの実装はhere
なぜ上記のコードで起こっているのですか?
を行う* - 。話の教訓を - C++は、* * Javaのではありません。 Javaをモデルとして使用してC++コードを作成しないでください。以下の答えは、Javaの同じコードがC++の場合と同じように動作すると考えたときのトラブルを示しています。 – PaulMcKenzie