给定一个字符串s和一个字符串数组words,编写一个程序查找字符串s中是否有任意一个字符串数组中的单词。用map实现
时间: 2024-04-26 12:03:40 浏览: 189
判断字符串中的单词个数
4星 · 用户满意度95%
好的,您的问题是关于字符串匹配的。以下是使用C++语言和map数据结构实现的代码示例:
```cpp
#include <iostream>
#include <string>
#include <map>
using namespace std;
bool hasWord(string s, string words[], int n) {
map<string, bool> m; // 使用map记录字符串数组中的单词
for (int i = 0; i < n; i++) {
m[words[i]] = true;
}
string word = ""; // 用于暂存当前已匹配的单词
for (int i = 0; i < s.length(); i++) {
if (s[i] == ' ') { // 如果遇到空格,说明已匹配一个单词
if (m.find(word) != m.end()) { // 在map中查找该单词是否在字符串数组中
return true; // 如果在,则找到了一个匹配的单词,返回true
}
word = ""; // 清空word,准备匹配下一个单词
} else {
word += s[i]; // 将字符加入word中
}
}
if (m.find(word) != m.end()) { // 处理最后一个单词
return true;
}
return false; // 如果没有找到匹配的单词,则返回false
}
int main() {
string s = "This is a test string.";
string words[] = {"test", "string", "apple", "banana"};
int n = sizeof(words) / sizeof(words[0]);
if (hasWord(s, words, n)) {
cout << "Found a matching word." << endl;
} else {
cout << "No matching word found." << endl;
}
return 0;
}
```
这个代码示例的题意是给定一个字符串s和一个字符串数组words,判断s中是否包含任意一个字符串数组中的单词。具体实现是使用map数据结构记录字符串数组中的单词,然后遍历字符串s,逐个匹配单词并在map中查找是否存在。如果找到了一个匹配的单词,则返回true。最后,如果没有找到匹配的单词,则返回false。
阅读全文