原文:
给定一个字符串字典 dict[] 和一个字符数组 arr[] 。使用给定字符数组中的字符打印字典中所有可能的有效单词。 例:
输入:dict–【“go”、“bat”、“me”、“eat”、“goal”、boy、“run”】 arr【】=【‘e’、‘o’、‘b’、‘a’、‘m’、‘g’、‘l’】 输出:“go”、“me”、“goal”。 说明:字典中只有这三个字符串的所有字符。
输入:dict =[“goa”、“诱饵”、“狼狈”、“吃了”、“目标”、“女孩”、“雨”] arr[]= ['s ',' o ',' t ',' a ',' e ',' g ',' l ',' i ',' r'] 输出:“goa”、“吃了”、“目标”、“女孩”
做法:通过查字典每个字符串的字符就可以解决问题。如果一个字符串的所有字符都存在,那么这个字符串就可以形成。按照下面提到的步骤来解决问题。
- 连接所有字符,形成一个字符串。
- 遍历字符串中的每个单词,并查找每个单词的所有字符是否都出现在串联的字符串中。
为了更好地理解,请遵循下图所示。
图解:考虑下面的例子。
dict[] = [“走”、“蝙蝠”、“吃”、“肉”、“进球”、“男孩”、“跑”] 、 arr[]=[‘e’、‘o’、‘b’、‘a’、‘m’、‘g’、‘l’]
- 串联字符串= e o b a m g l
- 如果我们穿越“去”
- “eobamgl”中的“g”的索引为 5
- “eobamgl”中的索引为 1
- 这意味着所有的索引都存在。因此,我们将打印“开始”
- 如果有任何索引不存在,那就不包括在内。
- 同样“我”和“目标”也满足条件。
所以输出是“去”、“目标”和“我”。
下面是上述方法的实现。
c
// c code to implement the above approach
#include
using namespace std;
// function to print the words
void printword(string str, string s) {
for (int i = 0; i < str.size(); i ) {
if (s.find(str[i]) == string::npos) {
return;
}
}
cout << str << endl;
}
// function to find the words
void findword(vector str1, vector str2) {
string s = "";
for (int i = 0; i < str2.size(); i ) {
s = str2[i];
}
for (int i = 0; i < str1.size(); i ) {
printword(str1[i], s);
}
}
int main() {
vector str1 = {"go", "bat", "me", "eat",
"goal", "boy", "run"};
vector str2 = {'e', 'o', 'b', 'a', 'm', 'g', 'l'};
findword(str1, str2);
return 0;
}
// this code is contributed by samim hossain mondal.
java 语言(一种计算机语言,尤用于创建网站)
// java code to implement the above approach
class gfg{
// function to print the words
public static void printword(string str, string s) {
for (int i = 0; i < str.length(); i ) {
if (s.indexof(str.charat(i)) < 0) {
return;
}
}
system.out.println(str);
}
// function to find the words
public static void findword(string[] str1, char[] str2) {
string s = "";
for (int i = 0; i < str2.length; i ) {
s = str2[i];
}
for (int i = 0; i < str1.length; i ) {
printword(str1[i], s);
}
}
public static void main(string args[]) {
string[] str1 = {"go", "bat", "me", "eat", "goal", "boy", "run"};
char[] str2 = {'e', 'o', 'b', 'a', 'm', 'g', 'l'};
findword(str1, str2);
}
}
// this code is contributed by saurabh jaiswal
python 3
# python code to implement the above approach
# function to print the words
def printword(str, s):
for i in range(0, len(str)):
if (not (str[i] in s)):
return
print(str)
# function to find the words
def findword(str1, str2):
s = ""
for i in str2:
s = i
for i in range(0, len(str1)):
printword(str1[i], s)
# driver code
if __name__ == "__main__":
str1 = ["go", "bat", "me", "eat", "goal", "boy", "run"]
str2 = ["e", "o", "b", "a", "m", "g", "l"]
findword(str1, str2)
# this code is contributed by rakeshsahni
java 描述语言
输出:
go
me
goal
时间复杂度: o(n * k),其中 n 是字典[]的长度,k 是 arr[]的长度。 辅助空间: o(1)
麻将胡了pg电子网站的版权属于:月萌api www.moonapi.com,转载请注明出处