gpt4 book ai didi

c++ - 在读取数据文件时,如何找到用户输入的字符串的变位词?

转载 作者:太空宇宙 更新时间:2023-11-04 12:38:20 25 4
gpt4 key购买 nike

基本上我得到了一个包含 100 个单词的数据文件,我的任务是编写一个变位词查找器以在数据文件中查找变位词。一旦找到变位词,我就会努力编写代码以打印出数据文件中的单词。

我设法将字符串按字母顺序排序以进行比较,并且我做了一个 if 语句来判断当前单词是否与原始字符串相同,然后打印出该单词。

如果这个问题听起来令人困惑,我深表歉意,我已经被困在这个问题上好几天了,我根本无法解决这个问题。

string FindAnagram(string originalString) {
string currentWord;
string localString;
localString = originalString + currentWord;

ifstream dbFile;
dbFile.open(cDATAFILE);

while(!dbFile.eof()){
getline(dbFile, currentWord);

sort (currentWord.begin(), currentWord.end());
sort (originalString.begin(), originalString.end());

if(currentWord == originalString){
cout << "\n\t Anagram of the current word: " << localString << endl;
}
else {
cout << "\n\t No anagram available." << endl;
}

}
dbFile.close();
return currentWord;
}

例如,如果 currentWord 是“alert”,那么它会通读数据文件并打印出单词“alert”的变位词,但我正在努力让它打印出数据文件中的单词.

例如,“later”应该被打印出来,但是“alert”却被打印出来了。

提前致谢。

最佳答案

您不再数据文件中的单词,因为您用排序操作改变了它。

在执行此操作之前只需复制字符串,这样您仍然拥有原始字符串。

顺便说一下,localstring 很奇怪;当 currentWord 为空时,为什么要将 currentWord 附加到它?

而且您不需要一遍又一遍地对 originalString 进行排序。

std::string FindAnagram(const std::string& originalString)
{
std::string originalStringSorted = originalString;
std::sort(originalStringSorted.begin(), originalStringSorted.end());

std::ifstream dbFile(cDATAFILE);
std::string currentWord;
while (std::getline(dbFile, currentWord))
{
std::string currentWordSorted = currentWord;
std::sort(currentWordSorted.begin(), currentWordSorted.end());

if (currentWordSorted == originalStringSorted)
{
std::cout << "Found '" << currentword << "' to be an anagram of '"
<< originalString << "'\n";
return currentWord;
}
}

std::cout << "No anagram found\n";
return "";
}

关于c++ - 在读取数据文件时,如何找到用户输入的字符串的变位词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55435103/

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