给定的字符串的常用3 [] []的大小N和一个字符串S的阵列,任务是找到字符串从阵列具有出现的字符串S.在其所有的字符的数目
例子:
Input: arr[][] = {“ab”, “aab”, “abaaaa”, “bbd”}, S = “ab”
Output: 3
Explanation: String “ab” have all the characters occurring in string S.
String “aab” have all the characters occurring in string S.
String “abaaaa” have all the characters occurring in string S.
Input:arr[] = {“geeks”, “for”, “geeks”}, S = “ds”
Output: 0
方法:思路是使用Hashing来解决问题。请按照以下步骤解决问题:
- 初始化一组无序的字符,比如valid和一个计数器变量,比如cnt
- 将字符串S 的所有字符插入到集合valid 中。
- 遍历数组arr[]并执行以下步骤:
- 遍历字符串ARR的字符[i]和检查,如果发生在字符串S字符串改编[I]的所有字符或不与组有效的帮助。
- 如果发现为真,则增加cnt 。
- 最后打印得到的结果cnt
下面是上述方法的实现:
C++
// C++ program to implement
// the above approach
#include
using namespace std;
// Function to count the number of
// strings from an array having all
// characters appearing in the string S
int countStrings(string S, vector& list)
{
// Initialize a set to store all
// distinct characters of string S
unordered_set valid;
// Traverse over string S
for (auto x : S) {
// Insert characters
// into the Set
valid.insert(x);
}
// Stores the required count
int cnt = 0;
// Traverse the array
for (int i = 0; i < list.size(); i++) {
int j = 0;
// Traverse over string arr[i]
for (j = 0; j < list[i].size(); j++) {
// Check if character in arr[i][j]
// is present in the string S or not
if (valid.count(list[i][j]))
continue;
else
break;
}
// Increment the count if all the characters
// of arr[i] are present in the string S
if (j == list[i].size())
cnt++;
}
// Finally, print the count
return cnt;
}
// Driver code
int main()
{
vector arr = { "ab", "aab",
"abaaaa", "bbd" };
string S = "ab";
cout << countStrings(S, arr) << endl;
}
Java
// Java program to implement
// the above approach
import java.util.*;
class GFG
{
// Function to count the number of
// Strings from an array having all
// characters appearing in the String S
static int countStrings(String S, String []list)
{
// Initialize a set to store all
// distinct characters of String S
HashSet valid = new HashSet();
// Traverse over String S
for (char x : S.toCharArray())
{
// Insert characters
// into the Set
valid.add(x);
}
// Stores the required count
int cnt = 0;
// Traverse the array
for (int i = 0; i < list.length; i++)
{
int j = 0;
// Traverse over String arr[i]
for (j = 0; j < list[i].length(); j++)
{
// Check if character in arr[i][j]
// is present in the String S or not
if (valid.contains(list[i].charAt(j)))
continue;
else
break;
}
// Increment the count if all the characters
// of arr[i] are present in the String S
if (j == list[i].length())
cnt++;
}
// Finally, print the count
return cnt;
}
// Driver code
public static void main(String[] args)
{
String []arr = { "ab", "aab",
"abaaaa", "bbd" };
String S = "ab";
System.out.print(countStrings(S, arr) +"\n");
}
}
// This code is contributed by 29AjayKumar
Python3
# Python3 program to implement
# the above approach
# Function to count the number of
# strings from an array having all
# characters appearing in the string S
def countStrings(S, list):
# Initialize a set to store all
# distinct characters of S
valid = {}
# Traverse over S
for x in S:
# Insert characters
# into the Set
valid[x] = 1
# Stores the required count
cnt = 0
# Traverse the array
for i in range(len(list)):
j = 0
# Traverse over arr[i]
while j < len(list[i]):
# Check if character in arr[i][j]
# is present in the S or not
if (list[i][j] in valid):
j += 1
continue
else:
break
j += 1
# Increment the count if all the characters
# of arr[i] are present in the S
if (j == len(list[i])):
cnt += 1
# Finally, prthe count
return cnt
# Driver code
if __name__ == '__main__':
arr = ["ab", "aab", "abaaaa", "bbd"]
S,l = "ab",[]
print(countStrings(S, arr))
# This code is contributed by mohit kumar 29
C#
// C# program to implement
// the above approach
using System;
using System.Collections.Generic;
class GFG
{
// Function to count the number of
// Strings from an array having all
// characters appearing in the String S
static int countStrings(String S, String []list)
{
// Initialize a set to store all
// distinct characters of String S
HashSet valid = new HashSet();
// Traverse over String S
foreach (char x in S.ToCharArray())
{
// Insert characters
// into the Set
valid.Add(x);
}
// Stores the required count
int cnt = 0;
// Traverse the array
for (int i = 0; i < list.Length; i++)
{
int j = 0;
// Traverse over String arr[i]
for (j = 0; j < list[i].Length; j++)
{
// Check if character in arr[i,j]
// is present in the String S or not
if (valid.Contains(list[i][j]))
continue;
else
break;
}
// Increment the count if all the characters
// of arr[i] are present in the String S
if (j == list[i].Length)
cnt++;
}
// Finally, print the count
return cnt;
}
// Driver code
public static void Main(String[] args)
{
String []arr = { "ab", "aab",
"abaaaa", "bbd" };
String S = "ab";
Console.Write(countStrings(S, arr) +"\n");
}
}
// This code is contributed by shikhasingrajput
Javascript
输出:
3
时间复杂度: O(N * M)
辅助空间: O(N * M)
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。