gpt4 book ai didi

c++ - 接受两个转换字母输入的函数?

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:27 25 4
gpt4 key购买 nike

我想知道如何创建一个函数来接受输入,例如“Computre”,或者任何可能的...“Cmoputer”、“romputeC”而不是“Computer”。

//This function would be something like this:
void ignore_switched_letters(char word[]);

int main(){//...}

void ignore_switched_letters(char word[]){
//... code implimentation...
char computer[9] = "Computer";
int length = strlen(computer);
for (int i = 0; i < length; ++i){
if (word[i] == 'C'){ ....
}
}
}

最佳答案

我建议您将单词全部小写放在 std::string 中。那么你就有了standard library algorithms的力量可供您使用,包括 std::mismatch它返回两个范围不同的第一个位置。您可以检查是否存在两个彼此相反的不匹配。将其编写为比较两个单词的函数可能更灵活:

#include <string>
#include <algorithm>
#include <cassert>

bool compareIgnoreSingleSwitch(const std::string& word1, const std::string& word2) {
if (word1.size() != word2.size())
return false;

auto mismatch1 = std::mismatch(word1.begin(), word1.end(), word2.begin());
if (mismatch1.first == word1.end())
return true; // no mismatches

auto mismatch2
= std::mismatch(std::next(mismatch1.first), word1.end(), std::next(mismatch1.second));

if (mismatch2.first == word1.end())
return false; // only one mismatch, can't be a switch

// check the two mismatches are inverse of each other
if (*mismatch1.first != *mismatch2.second || *mismatch1.second != *mismatch2.first)
return false;

// ensure no more mismatches
return std::equal(std::next(mismatch2.first), word1.end(), std::next(mismatch2.second));
}

int main() {
assert(compareIgnoreSingleSwitch("computer", "computer")); // equal
assert(compareIgnoreSingleSwitch("computer", "pomcuter")); // one switch
assert(!compareIgnoreSingleSwitch("computer", "aomxuter")); // not a switch
assert(!compareIgnoreSingleSwitch("computer", "pomputer")); // one mismatch
assert(!compareIgnoreSingleSwitch("computer", "ocmupter")); // two switches
assert(!compareIgnoreSingleSwitch("computer", "compute")); // different length
}

Live demo.

关于c++ - 接受两个转换字母输入的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31422396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com