C++で文字列がアイソグラムかどうかをチェックする方法


方法1: ハッシュマップを使用する方法 以下は、ハッシュマップを使用して文字列がアイソグラムかどうかをチェックする例です。

#include <iostream>
#include <unordered_map>
using namespace std;
bool isIsogram(string str) {
    unordered_map<char, int> freqMap;
    for (char ch : str) {
        if (freqMap[ch] > 0) {
            return false;
        }
        freqMap[ch]++;
    }
    return true;
}
int main() {
    string input;
    cout << "文字列を入力してください: ";
    cin >> input;
    if (isIsogram(input)) {
        cout << "入力された文字列はアイソグラムです。" << endl;
    } else {
        cout << "入力された文字列はアイソグラムではありません。" << endl;
    }
    return 0;
}

方法2: ソートを使用する方法 文字列をソートし、隣接する文字が同じであればアイソグラムではありません。

#include <iostream>
#include <algorithm>
using namespace std;
bool isIsogram(string str) {
    sort(str.begin(), str.end());
    for (int i = 0; i < str.length() - 1; i++) {
        if (str[i] == str[i + 1]) {
            return false;
        }
    }
    return true;
}
int main() {
    string input;
    cout << "文字列を入力してください: ";
    cin >> input;
    if (isIsogram(input)) {
        cout << "入力された文字列はアイソグラムです。" << endl;
    } else {
        cout << "入力された文字列はアイソグラムではありません。" << endl;
    }
    return 0;
}