私はかなりプログラミングが慣れています。私は正確に同じ要素を持っているが異なる順序で2つの文字列を比較する必要がある。私はstrcmpi()
を使って比較しようとしましたが、うまくいきません。私はis_permutation()
を使って試しましたが、ネットで読み込んだ文字列は同じ要素と比較するのに使われましたが、私のコンパイラは<algorith.h>
を含んでいてもそれが存在しないと言っています。私のコンパイラはBorland C++です。 2つの文字列を比較して同じ要素と等しいと評価されますが、異なる順序で配置される他の方法はありますか?例えば、"evil"
および"vile"
。C++の文字列を比較すると、文字は同じでも順序は異なります。
-1
A
答えて
2
コンパイラは古いです。私はチェックしませんでしたが、確かに、それはstd::is_permutationに必要なC++ 11をサポートしていません。
コメントはすでに指摘されているので、文字列を
sort
とするだけで比較できます。コメントにも指摘されているように、あなたがインクルードしようとしているヘッダーは標準ではない/正しくありません(これはおそらく古代コンパイラを使用しているためです - VS2015、GCC 6.1、 3.8は無償で提供され、すべてがC++ 11/C++ 14サポートを提供します)。
1
ネイサン・オリバーが示すように、2を並べ替えると、彼らが等しいかどうかを確認します。ソースコードは次のとおりです。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool AreAnagrams(string s1, string s2) {
sort(s1.begin(), s1.end());
sort(s2.begin(), s2.end());
return s1 == s2;
}
int main() {
if (AreAnagrams("evil", "vile"))
cout << "Are anagrams." << endl;
else
cout << "Are not anagrams." << endl;
return 0;
}
+0
ありがとうございます。私は試してみます – james
2
あなたは、彼らはその後、trueを返すと等しいなら、それぞれの文字は、各文字列に表示された回数をカウントすることができます。
#include <iostream>
#include <string>
using namespace std;
bool anagrams(string s, string t){
if(s.length() != t.length())
return false;
int chArr[256];
// Set character's count to 0
for(int i=0; i<256; i++)
chArr[i] = 0;
for(int i=0; i<s.length(); i++){
chArr[s[i]]++;
chArr[t[i]]--;
}
for(int i=0; i<256; i++){
if(chArr[i] != 0)
return false;
}
return true;
}
int main(){
if(anagrams("hello, olelh"))
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}
関連する問題
- 1. 同じ列(行)でも異なる列の文字列を比較する
- 2. strcmp()は同じ文字列比較で異なる値を返します
- 3. Cの文字列と文字列ポインタを比較すると同等です
- 4. C++で文字列と文字列を比較する
- 5. 2つの文字列の同じ順序の文字セット
- 6. 同じ文字列がSQLで異なる順序で受信されたときの文字列との比較方法
- 7. Cの文字列と文字列を比較する
- 8. 同じ文字列が含まれている場合は同じ文字列のキーを比較するpython
- 9. 数字比較は文字列比較よりも高速ですか?
- 10. ワイルドカード演算子(*)とランダムな順序の文字列を比較する - アナグラム
- 11. C++文字列の比較
- 12. 文字列の比較C#
- 13. C++文字列の比較
- 14. C#の文字列比較#
- 15. C++文字列の比較
- 16. 個々の文字の文字列比較とアルファベット順
- 17. bash:文字列と文字列を比較するには?
- 18. データ型文字列とC#の文字列との比較
- 19. 文字列の比較と文は
- 20. Optarg文字列比較C
- 21. 文字列と文字列とをアンドロイドで比較する
- 22. 文字列と他の文字列をシーケンシャルで比較する
- 23. 大文字と小文字を区別しない文字列の比較C++
- 24. 文字列の数字を逆順にして、同じ文字の順序を維持する方法
- 25. 私のCアプリケーションでは、文字列を文字列リストと比較して
- 26. 文字列とPHPの文字列を比較しますか?
- 27. 全く同じでない文字列の比較
- 28. charと文字列の比較 - C
- 29. C#Linq文字列とindexOfの比較
- 30. C#SQL Serverと文字列の比較
'std :: sort'と比較します。 – NathanOliver
各文字列の文字を並べ替えることができます。 –
「」は標準ヘッダではなく、「」でもありません。 C++ヘッダーの[reference](http://en.cppreference.com/w/cpp/header)は、あなたに多くのことを伝えます。とにかく、Borlandでもアルゴリズムをサポートしているのかどうかは分かりませんが、基本的に 'std :: is_permutation'を何らかの形で再開発しなければなりません。 –
chris