C++ Anagrams

2 minute read

The code has been modified slightly and now uploaded to the site.

Question

<— Return Home

101.cpp

#include <iostream>
#include "CheckAnagram101.h"
#include <string>
using namespace std;

int main(){
    string s1;
    string s2;

    std::cout << "Enter a string s1: \n";
    std::cin >> s1;
    
    std::cout << "Enter a string s2: \n";
    std::cin >> s2;

    // const string& string1 = s1;
    // const string& string2 = s2;

    CheckAnagram101 checkAnagram;

    if (checkAnagram.isAnagram(s1, s2) == false){
        std::cout << s1 << " and " << s2 << " are not anagrams";
    }
    else {
        std::cout << s1 << " and " << s2 << " are anagrams";
    }
}

<— Return Home

CheckAnagram101.h

#include "CheckAnagram101.h"
// #include <iostream>
#include <string>
using namespace std;

// CheckAnagram101::CheckAnagram101(string string1, string string2){
//     s1 = string1;
//     s2 = string2;
// }

CheckAnagram101::CheckAnagram101(){

}

// const string& CheckAnagram101::getS1(){
//     return s1;
// }

// const string& CheckAnagram101::getS2(){
//     return s2;
// }

// For C++ substrings, the last parameter is the amount of letters taken instead of the position number
bool CheckAnagram101::isAnagram(string string1, string string2){ //TODO: Convert to const
    string letter = "";
    string letter2nd = "";
    for (int i = 0; i < string1.length(); i++){
        letter = string1.substr(i, 1);
        for (int j = 0; j < string2.length(); j++){
            letter2nd = string2.substr(j, 1);
            if (j == string2.length() - 1 && (letter != string2.substr(j))){
                return false;
            }

            if (letter != letter2nd){
                // std::cout << letter2nd;
                // std::cout << "I am continuing\n";
                continue;
            }

            if (letter == letter2nd) {
                // std::cout << "I am breaking!\n";
                break;
            }
        }
    }
    return true;

    // return getS1().compare(getS2());
    // int result = string1.compare(string2);
    // switch(result){
    //     case -1:
    //         return false;
    //     case 0:
    // }
    // return string1.compare(string2);
}

<— Return Home

CheckAnagram101.cpp

#include "CheckAnagram101.h"
// #include <iostream>
#include <string>
using namespace std;

// CheckAnagram101::CheckAnagram101(string string1, string string2){
//     s1 = string1;
//     s2 = string2;
// }

CheckAnagram101::CheckAnagram101(){

}

// const string& CheckAnagram101::getS1(){
//     return s1;
// }

// const string& CheckAnagram101::getS2(){
//     return s2;
// }

// For C++ substrings, the last parameter is the amount of letters taken instead of the position number
bool CheckAnagram101::isAnagram(string string1, string string2){ //TODO: Convert to const
    string letter = "";
    string letter2nd = "";
    for (int i = 0; i < string1.length(); i++){
        letter = string1.substr(i, 1);
        for (int j = 0; j < string2.length(); j++){
            letter2nd = string2.substr(j, 1);
            if (j == string2.length() - 1 && (letter != string2.substr(j))){
                return false;
            }

            if (letter != letter2nd){
                // std::cout << letter2nd;
                // std::cout << "I am continuing\n";
                continue;
            }

            if (letter == letter2nd) {
                // std::cout << "I am breaking!\n";
                break;
            }
        }
    }
    return true;

    // return getS1().compare(getS2());
    // int result = string1.compare(string2);
    // switch(result){
    //     case -1:
    //         return false;
    //     case 0:
    // }
    // return string1.compare(string2);
}

<— Return Home