📌  相关文章
📜  检查所有出现的字符一起出现

📅  最后修改于: 2021-04-27 20:18:24             🧑  作者: Mango

给定一个字符串s和一个字符c ,查找是否所有出现的cs中一起出现。如果字符c根本没有出现在字符串中,则答案为是。

例子

Input: s = "1110000323", c = '1'
Output: Yes
All occurrences of '1' appear together in
"1110000323"

Input: s  = "3231131", c = '1'
Output: No
All occurrences of 1 are not together

Input: s  = "abcabc", c = 'c'
Output: No
All occurrences of 'c' are not together

Input: s  = "ababcc", c = 'c'
Output: Yes
All occurrences of 'c' are together

这个想法是遍历给定的字符串,一旦我们发现c出现,我们就继续遍历直到找到不是c的字符。我们还设置了一个标志,以指示出现了c的另一次出现。如果再次看到c并设置了flag,则返回false。

C++
// CPP program to find if all occurrences
// of a character appear together in a string.
#include 
#include 
using namespace std;
  
bool checkIfAllTogether(string s, char c)
{
    // To indicate if one or more occurrences
    // of 'c' are seen or not.
    bool oneSeen = false;
  
    // Traverse given string
    int i = 0, n = s.length();
    while (i < n) {
  
        // If current character is same as c,
        // we first check if c is already seen.         
        if (s[i] == c) {
            if (oneSeen == true)
                return false;
  
            // If this is very first appearance of c,
            // we traverse all consecutive occurrences.
            while (i < n && s[i] == c)
                i++;
  
            // To indicate that character is seen  once.
            oneSeen = true;
        }
  
        else
            i++;
    }
    return true;
}
  
// Driver program
int main()
{
    string s = "110029";
    if (checkIfAllTogether(s, '1'))
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
    return 0;
}


Java
// Java program to find if all 
// occurrences of a character 
// appear together in a string.
import java.io.*;
  
class GFG {
  
static boolean checkIfAllTogether(String s,
                                    char c)
    {
          
        // To indicate if one or more 
        // occurrences of 'c' are seen
        // or not.
        boolean oneSeen = false;
      
        // Traverse given string
        int i = 0, n = s.length();
        while (i < n) 
        {
      
            // If current character is
            // same as c, we first check
            // if c is already seen.         
            if (s.charAt(i) == c) 
            {
                if (oneSeen == true)
                    return false;
      
                // If this is very first
                // appearance of c, we 
                // traverse all consecutive
                // occurrences.
                while (i < n && s.charAt(i) == c)
                    i++;
      
                // To indicate that character
                // is seen once.
                oneSeen = true;
            }
      
            else
                i++;
        }
          
        return true;
    }
  
    // Driver Code
    public static void main(String[] args)
    {
  
        String s = "110029";
          
        if (checkIfAllTogether(s, '1'))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
  
// This code is contributed by Sam007.


Python3
# Python program to find 
# if all occurrences
# of a character appear
# together in a string.
  
# function to find 
# if all occurrences
# of a character appear
# together in a string.
def checkIfAllTogether(s, c) :
      
    # To indicate if one or
    # more occurrences of 
    # 'c' are seen or not.
    oneSeen = False
  
    # Traverse given string
    i = 0
    n = len(s)
    while (i < n) : 
        # If current character 
        # is same as c,
        # we first check 
        # if c is already seen.     
        if (s[i] == c) :     
            if (oneSeen == True) :
                return False
            # If this is very first
            # appearance of c,
            # we traverse all
            # consecutive occurrences.
            while (i < n and s[i] == c) :
                i = i + 1
            # To indicate that character
            # is seen once.
            oneSeen = True
  
        else :
            i = i + 1
      
    return True
  
  
# Driver Code
s = "110029";
if (checkIfAllTogether(s, '1')) :
    print ("Yes\n")
else :
    print ("No\n")
  
# This code is contributed by 
# Manish Shaw (manishshaw1)


C#
// C# program to find if all occurrences
// of a character appear together in a
// string.
using System;
  
public class GFG {
      
    static bool checkIfAllTogether(string s,
                                     char c)
    {
          
        // To indicate if one or more 
        // occurrences of 'c' are seen
        // or not.
        bool oneSeen = false;
      
        // Traverse given string
        int i = 0, n = s.Length;
        while (i < n) {
      
            // If current character is
            // same as c, we first check
            // if c is already seen.         
            if (s[i] == c) {
                if (oneSeen == true)
                    return false;
      
                // If this is very first
                // appearance of c, we 
                // traverse all consecutive
                // occurrences.
                while (i < n && s[i] == c)
                    i++;
      
                // To indicate that character
                // is seen once.
                oneSeen = true;
            }
      
            else
                i++;
        }
          
        return true;
    }
      
    // Driver code
    public static void Main()
    {
        string s = "110029";
          
        if (checkIfAllTogether(s, '1'))
            Console.Write( "Yes" );
        else
            Console.Write( "No" );
    }
}
  
// This code is contributed by Sam007.


PHP


输出:

Yes

上面程序的复杂度为O(n)。