Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何确定两个字符串是否同构? #包括 #包括 #包括 使用名称空间std; 布尔是同构的(字符串输入1,字符串输入2) { if(input1.length()!=input2.length()) 返回false; 向量差(26,-40);//用一些随机值初始化。 对于(int i=0;i_C++ - Fatal编程技术网

C++ 如何确定两个字符串是否同构? #包括 #包括 #包括 使用名称空间std; 布尔是同构的(字符串输入1,字符串输入2) { if(input1.length()!=input2.length()) 返回false; 向量差(26,-40);//用一些随机值初始化。 对于(int i=0;i

C++ 如何确定两个字符串是否同构? #包括 #包括 #包括 使用名称空间std; 布尔是同构的(字符串输入1,字符串输入2) { if(input1.length()!=input2.length()) 返回false; 向量差(26,-40);//用一些随机值初始化。 对于(int i=0;i,c++,C++,您还需要检查input1中的两个字符是否映射到input2中的同一个字符 #include <iostream> #include <string> #include <vector> using namespace std; bool is_isomorphic(string input1, string input2) { if(input1.length()!= input2.length()) return false;

您还需要检查
input1
中的两个字符是否映射到
input2
中的同一个字符

#include <iostream>
#include <string>
#include <vector>

using namespace std;

bool is_isomorphic(string input1, string input2)
{
    if(input1.length()!= input2.length())
        return  false;

    vector<int> diff_arr(26, -40);//Initialise with some random value.

    for(int  i = 0 ; i < input1.length(); i++){
        if(diff_arr[input1[i]-'a'] == -40)
            diff_arr[input1[i]-'a'] = input1[i] - input2[i];
        else{
            if(diff_arr[input1[i]-'a'] != input1[i] - input2[i])
                return false;
        }
    }

    return true;
}

int main() {
    cout<<is_isomorphic("abcd", "aabb");
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
布尔是同构的(字符串输入1,字符串输入2)
{
if(input1.length()!=input2.length())
返回false;
设置Usedletter;
地图变换;
对于(int i=0;isecond==input2[i])继续;
否则返回false;
}
if(usedLetters.count(input2[i])返回false;
usedLetters.insert(input2[i]);
转换[input1[i]]=input2[i];
}
返回true;
}
int main(){

cout您还需要检查
input1
中的两个字符是否映射到
input2
中的同一个字符

#include <iostream>
#include <string>
#include <vector>

using namespace std;

bool is_isomorphic(string input1, string input2)
{
    if(input1.length()!= input2.length())
        return  false;

    vector<int> diff_arr(26, -40);//Initialise with some random value.

    for(int  i = 0 ; i < input1.length(); i++){
        if(diff_arr[input1[i]-'a'] == -40)
            diff_arr[input1[i]-'a'] = input1[i] - input2[i];
        else{
            if(diff_arr[input1[i]-'a'] != input1[i] - input2[i])
                return false;
        }
    }

    return true;
}

int main() {
    cout<<is_isomorphic("abcd", "aabb");
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
布尔是同构的(字符串输入1,字符串输入2)
{
if(input1.length()!=input2.length())
返回false;
设置Usedletter;
地图变换;
对于(int i=0;isecond==input2[i])继续;
否则返回false;
}
if(usedLetters.count(input2[i])返回false;
usedLetters.insert(input2[i]);
转换[input1[i]]=input2[i];
}
返回true;
}
int main(){

cout您需要两个数组,一个用来知道input2的哪个字符对应于input1的给定字符,另一个用来检查input2的某个字符是否已经影响到input1的某个字符

#include <iostream>
#include <string>
#include <map>
#include <set>

using namespace std;

bool is_isomorphic(string input1, string input2)
{
    if(input1.length()!= input2.length())
        return  false;

    set<char> usedLetters;
    map<char, char> transformations;

    for(int i = 0 ; i < input1.length(); i++) {
        auto iter = transformations.find(input1[i]);
        if (iter != transformations.end()) {
            if (iter->second == input2[i]) continue;
            else return false;
        }
        if (usedLetters.count(input2[i])) return false;
        usedLetters.insert(input2[i]);
        transformations[input1[i]] = input2[i];
    }

    return true;
}

int main() {
    cout<<is_isomorphic("abcd", "aabb");
    return 0;
}
#包括
#包括
使用名称空间std;
布尔是同构的(常量字符串和输入1,常量字符串和输入2)
{
if(input1.length()!=input2.length()){
返回false;
}
字符映射[256]{};
布尔使用[256]{};
对于(大小i=0;icout您需要两个数组,一个用来知道input2的哪个字符对应于input1的给定字符,另一个用来检查input2的某个字符是否已经影响到input1的某个字符

#include <iostream>
#include <string>
#include <map>
#include <set>

using namespace std;

bool is_isomorphic(string input1, string input2)
{
    if(input1.length()!= input2.length())
        return  false;

    set<char> usedLetters;
    map<char, char> transformations;

    for(int i = 0 ; i < input1.length(); i++) {
        auto iter = transformations.find(input1[i]);
        if (iter != transformations.end()) {
            if (iter->second == input2[i]) continue;
            else return false;
        }
        if (usedLetters.count(input2[i])) return false;
        usedLetters.insert(input2[i]);
        transformations[input1[i]] = input2[i];
    }

    return true;
}

int main() {
    cout<<is_isomorphic("abcd", "aabb");
    return 0;
}
#包括
#包括
使用名称空间std;
布尔是同构的(常量字符串和输入1,常量字符串和输入2)
{
if(input1.length()!=input2.length()){
返回false;
}
字符映射[256]{};
布尔使用[256]{};
对于(大小i=0;i不可能重复当它点击第二个字母时,它会看到
diff_数组['b']=-40
,并假设一切正常,即使
a
已经被映射。当它点击第二个字母时,它会看到
diff_数组['b']=-40
并假设一切正常,即使
a
已映射。可能更简单的方法是在参数反转的情况下第二次调用
is_同构
。可能更简单的方法是在参数反转的情况下第二次调用
is_同构