给定一个字符串s和一个字符c ,查找是否所有出现的c在s中一起出现。如果字符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)。