C++で文字列を圧縮する
文字列sがあるとすると、指定された文字列から連続する重複文字を削除して返す必要があります。したがって、リストに連続して繰り返される文字が含まれている場合は、それらを文字の1つのコピーに置き換える必要があります。要素の順序は以前と同じになります。
したがって、入力が「heeeeelllllllloooooo」の場合、出力は「helo」になります
これを解決するには、次の手順に従います-
-
ret:=空白の文字列
-
初期化i:=0の場合、i
-
retのサイズがゼロ以外で、retの最後の要素がs [i]と同じである場合、-
-
次の部分を無視し、次の反復にスキップします
-
-
ret:=ret concatenate s [i]
-
-
retを返す
理解を深めるために、次の実装を見てみましょう-
例
#include <bits/stdc++.h> using namespace std; class Solution { public: string solve(string s) { string ret = ""; for(int i = 0; i < s.size(); i++){ if(ret.size() && ret.back() == s[i]){ continue; } ret += s[i]; } return ret; } }; int main(){ Solution ob; cout << (ob.solve("heeeeelllllllloooooo")); }
入力
"heeeeelllllllloooooo"
出力
helo
-
C++でゲームVをジャンプする
arrと呼ばれる整数の配列と整数dがあるとします。 1つのステップで、インデックスiから-にジャンプできます。 i + xここで、i +x
-
C ++で文字列をトークン化しますか?
最初の方法は、文字列ストリームを使用して、スペースで区切られた単語を読み取ることです。これは少し制限されていますが、適切なチェックを提供すれば、タスクはかなりうまくいきます。 例 #include <vector> #include <string> #include <sstream> using namespace std; int main() { string str("Hello from the dark side"); string tmp; // A string