通过删除两个辅音之间的元音来修改字符串
给定一个仅包含小写英文字母的字符串S,任务是通过从字符串中消除出现在两个辅音之间的此类元音来更新字符串。
例子:
Input: bab
Output: bb
Here the letter ‘a’ is a vowel and is between two immediate consonants.
Thus, it is removed from the string, and the resultant string becomes ‘bb‘
Input: geeksforgeeks
Output: geeksfrgeeks
In the substring ‘for’ the alphabet ‘o’ is between two consonants ‘f’ and ‘r’.
Thus, it is removed from there and the string becomes-‘geeksfrgeeks‘
方法:初始化一个空的updatedString 。下面给出解决上述问题的步骤。
- 从左到右遍历字符串。
- 如果当前字符是元音,检查它之前的字符和它之后的字符,如果这两个都是辅音,那么当前元音是'Sandwiched Vowel',需要从S中删除,因此不要附加这个字符给 A。
否则,将当前字符附加到 A。 - 继续这个过程,直到两个辅音之间的所有元音都从字符串中删除
下面是上述方法的实现:
C++
// C++ program to remove all Vowels
// in between two consonants from the string
#include
using namespace std;
// Function to check if the character x is a vowel or not
bool isVowel(char x)
{
if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u')
return true;
else
return false;
}
// Returns the updated string formed after removing all
// the Sandwiched Vowels from the given string
string updateSandwichedVowels(string a)
{
int n = a.length();
// string to store the Updated String after
// removing the Sandwiched Vowels
string updatedString = "";
// traverse the string from left to right
for (int i = 0; i < n; i++) {
// if the current character is the first or the
// last character of the string then, this needs
// to be appended to the updatedString, since the
// corner alphabet irrespective of it being a vowel
// or a consonant, is never 'Sandwiched'
if (!i || i == n - 1) {
updatedString += a[i];
continue;
}
// Check if the current character of the string is
// a vowel and both the previous and the next characters
// are consonants, if so then this is a sandwiched
// vowel, thus is ignored and not appended
// to the updated string
if (isVowel(a[i]) && !isVowel(a[i - 1])
&& !isVowel(a[i + 1])) {
continue;
}
// if this character is not a sandwiched Vowel append
// it to the updated String
updatedString += a[i];
}
return updatedString;
}
// Driver Code
int main()
{
string str = "geeksforgeeks";
// Remove all the Sandwitched Vowels
string updatedString = updateSandwichedVowels(str);
cout << updatedString;
return 0;
}
Java
// Java program to remove all
// Vowels in between two
// consonants from the string
import java.io.*;
import java.util.*;
import java.lang.*;
class GFG
{
// Function to check if the
// character x is a vowel or not
static boolean isVowel(char x)
{
if (x == 'a' || x == 'e' ||
x == 'i' || x == 'o' ||
x == 'u')
return true;
else
return false;
}
// Returns the updated string
// formed after removing all
// the Sandwiched Vowels from
// the given string
static String updateSandwichedVowels(String a)
{
int n = a.length();
// string to store the Updated
// String after removing the
// Sandwiched Vowels
String updatedString = "";
// traverse the string
// from left to right
for (int i = 0; i < n; i++)
{
// if the current character is
// the first or the last character
// of the string then, this needs
// to be appended to the updatedString,
// since the corner alphabet irrespective
// of it being a vowel or a consonant,
// is never 'Sandwiched'
if (i == 0 || i == n - 1)
{
updatedString += a.charAt(i);
continue;
}
// Check if the current character
// of the string is a vowel and both
// the previous and the next characters
// are consonants, if so then this is
// a sandwiched vowel, thus is ignored
// and not appended to the updated string
if (isVowel(a.charAt(i))== true &&
isVowel(a.charAt(i - 1))== false &&
isVowel(a.charAt(i + 1))== false)
{
continue;
}
// if this character is not
// a sandwiched Vowel append
// it to the updated String
updatedString += a.charAt(i);
}
return updatedString;
}
// Driver Code
public static void main(String[] args)
{
String str = "geeksforgeeks";
// Remove all the Sandwitched Vowels
String updatedString = updateSandwichedVowels(str);
System.out.print(updatedString);
}
}
Python3
# Python 3 program to remove all Vowels
# in between two consonants from the string
# Function to check if the character
# x is a vowel or not
def isVowel(x):
if (x == 'a' or x == 'e' or x == 'i' or
x == 'o' or x == 'u'):
return True
else:
return False
# Returns the updated string formed after
# removing all the Sandwiched Vowels from
# the given string
def updateSandwichedVowels(a):
n = len(a)
# string to store the Updated String after
# removing the Sandwiched Vowels
updatedString = ""
# traverse the string from left to right
for i in range(0, n, 1):
# if the current character is the first
# or the last character of the string
# then, this needs to be appended to
# the updatedString, since the corner
# alphabet irrespective of it being a vowel
# or a consonant, is never 'Sandwiched'
if (i == 0 or i == n - 1):
updatedString += a[i]
continue
# Check if the current character of the
# string is a vowel and both the previous
# and the next characters are consonants,
# if so then this is a sandwiched vowel,
# thus is ignored and not appended to the
# updated string
if (isVowel(a[i]) == True and
isVowel(a[i - 1]) == False and
isVowel(a[i + 1]) == False):
continue
# if this character is not a sandwiched
# Vowel append it to the updated String
updatedString += a[i]
return updatedString
# Driver Code
if __name__ == '__main__':
str = "geeksforgeeks"
# Remove all the Sandwitched Vowels
updatedString = updateSandwichedVowels(str)
print(updatedString)
# This code is contributed by
# Surendra_Gangwar
C#
// C# program to remove all
// Vowels in between two
// consonants from the string
using System;
class GFG
{
// Function to check if the
// character x is a vowel or not
static bool isVowel(char x)
{
if (x == 'a' || x == 'e' ||
x == 'i' || x == 'o' ||
x == 'u')
return true;
else
return false;
}
// Returns the updated string
// formed after removing all
// the Sandwiched Vowels from
// the given string
static String updateSandwichedVowels(String a)
{
int n = a.Length;
// string to store the Updated
// String after removing the
// Sandwiched Vowels
String updatedString = "";
// traverse the string
// from left to right
for (int i = 0; i < n; i++)
{
// if the current character is
// the first or the last character
// of the string then, this needs
// to be appended to the updatedString,
// since the corner alphabet irrespective
// of it being a vowel or a consonant,
// is never 'Sandwiched'
if (i == 0 || i == n - 1)
{
updatedString += a[i];
continue;
}
// Check if the current character
// of the string is a vowel and both
// the previous and the next characters
// are consonants, if so then this is
// a sandwiched vowel, thus is ignored
// and not appended to the updated string
if ((isVowel(a[i])) == true &&
isVowel(a[i - 1]) == false &&
isVowel(a[i + 1]) == false)
{
continue;
}
// if this character is not
// a sandwiched Vowel append
// it to the updated String
updatedString += a[i];
}
return updatedString;
}
// Driver Code
public static void Main()
{
String str = "geeksforgeeks";
// Remove all the Sandwitched Vowels
String updatedString = updateSandwichedVowels(str);
Console.WriteLine(updatedString);
}
}// This code is contributed by Mukul Singh.
PHP
Javascript
输出:
geeksfrgeeks
时间复杂度: O(N) 其中 N 是输入字符串的长度。
辅助空间: O(N)