📌  相关文章
📜  算从具有出现一个给定的字符串中的所有字符给定阵列的字符串

📅  最后修改于: 2021-09-04 08:26:09             🧑  作者: Mango

给定的字符串的常用3 [] []的大小N和一个字符串S的阵列,任务是找到字符串从阵列具有出现的字符串S.在其所有的字符的数目

例子:

方法:思路是用Hashing来解决问题。请按照以下步骤解决问题:

  1. 初始化一组无序的字符,比如valid和一个计数器变量,比如cnt
  2. 将字符串S 的所有字符插入到集合valid 中
  3. 遍历数组arr[]并执行以下步骤:
    • 遍历字符串ARR的字符[i]和检查,如果发生在字符串S字符串改编[I]的所有字符或不与组有效的帮助。
    • 如果发现为真,则增加cnt
  4. 最后打印得到的结果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


输出:
3

时间复杂度: O(N * M)
辅助空间: O(N * M)

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live