Efficient ways to compare a variable with multiple values
Last Updated :
02 Apr, 2024
In this article, we will discuss the ways to compare a variable with values.
Method 1: The idea is to compare each variable individually to all the multiple values at a time.
Program 1:
C++
// C++ program to compare one variable
// with multiple variable
#include <iostream>
using namespace std;
// Driver Code
int main()
{
// Variable to be compared
char character = 'a';
// Compare the given variable
// with vowel using || operator
// Check for vowel
if (character == ('a' || 'e'
|| 'i' || 'o'
|| 'u')) {
cout << "Vowel";
}
// Otherwise Consonant
else {
cout << "Consonant";
}
return 0;
}
Java
// Java program to compare one variable
// with multiple variable
import java.util.*;
class GFG
{
// Driver Code
public static void main(String[] args)
{
// Variable to be compared
char character = 'a';
// Compare the given variable
// with vowel using || operator
// Check for vowel
if (character == ('a' || 'e'
|| 'i' || 'o'
|| 'u')) {
System.out.print("Vowel");
}
// Otherwise Consonant
else {
System.out.print("Consonant");
}
}
}
// This code is contributed by Rajput-Ji
C#
// C# program to compare one variable
// with multiple variable
using System;
class GFG
{
// Driver Code
public static void Main(String[] args)
{
// Variable to be compared
char character = 'a';
// Compare the given variable
// with vowel using || operator
// Check for vowel
if (character == ('a' || 'e'
|| 'i' || 'o'
|| 'u')) {
Console.Write("Vowel");
}
// Otherwise Consonant
else {
Console.Write("Consonant");
}
}
}
// This code is contributed by 29AjayKumar
Javascript
<script>
// Javascript program to compare one variable
// with multiple variable
// Variable to be compared
var character = 'a';
// Compare the given variable
// with vowel using || operator
// Check for vowel
if (character == ('a'. charCodeAt(0) ||
'e'. charCodeAt(0) ||
'i'. charCodeAt(0) ||
'o'. charCodeAt(0) ||
'u'. charCodeAt(0)))
{
document.write("Vowel");
}
// Otherwise Consonant
else
{
document.write("Consonant");
}
// This code is contributed by SoumikMondal
</script>
Python3
# Python program to compare one variable
# with multiple variable
# Driver Code
if __name__ == '__main__':
# Variable to be compared
character = 'a';
# Compare the given variable
# with vowel using or operator
# Check for vowel
if (character == ('a' or 'e' or 'i' or 'o' or 'u')):
print("Vowel");
# Otherwise Consonant
else:
print("Consonant");
# This code contributed by shikhasingrajput
Complexity of the above Program:
Time Complexity: O(1) because constant operations are being performed
Auxiliary Space: O(1)
Explanation:
The above code gives the Wrong Answer or error as comparing variable in the above way is incorrect and it forced to code in the below way:
C++
// C++ program to compare one variable
// with multiple variable
#include <iostream>
using namespace std;
// Driver Code
int main()
{
// Variable to be compared
char character = 'a';
// Compare the given variable
// with vowel individually
// Check for vowel
if (character == 'a'
|| character == 'e'
|| character == 'i'
|| character == 'o'
|| character == 'u') {
cout << "Vowel";
}
// Otherwise Consonant
else {
cout << "Consonant";
}
return 0;
}
Java
// Java program to compare
// one variable with multiple
// variable
import java.util.*;
class GFG{
// Driver Code
public static void main(String[] args)
{
// Variable to be compared
char character = 'a';
// Compare the given variable
// with vowel using || operator
// Check for vowel
if (character == 'a' || character == 'e' ||
character == 'i' || character == 'o' ||
character == 'u')
{
System.out.print("Vowel");
}
// Otherwise Consonant
else
{
System.out.print("Consonant");
}
}
}
// This code is contributed by 29AjayKumar
C#
// C# program to compare
// one variable with multiple
// variable
using System;
class GFG{
// Driver Code
public static void Main(String[] args)
{
// Variable to be compared
char character = 'a';
// Compare the given variable
// with vowel using || operator
// Check for vowel
if (character == 'a' || character == 'e' ||
character == 'i' || character == 'o' ||
character == 'u')
{
Console.Write("Vowel");
}
// Otherwise Consonant
else
{
Console.Write("Consonant");
}
}
}
// This code is contributed by gauravrajput1
Javascript
<script>
// javascript program to compare one variable
// with multiple variable
// Driver Code
function checkCharacter(character)
{
// Compare the given variable
// with vowel using || operator
// Check for vowel
if (character == 'a' || character == 'e' ||
character == 'i' || character == 'o' ||
character == 'u') {
document.write("Vowel");
}
// Otherwise Consonant
else {
document.write("Consonant");
}
}
// Driver Code
checkCharacter('a');
// This code is contributed by bunnyram19.
</script>
Python3
# Python3 program to compare
# one variable with multiple
# variable
# Driver Code
if __name__ == '__main__':
# Variable to be compared
character = 'a';
# Compare the given variable
# with vowel using or operator
# Check for vowel
if (character == 'a' or
character == 'e' or
character == 'i' or
character == 'o' or
character == 'u'):
print("Vowel");
# Otherwise Consonant
else:
print("Consonant");
# This code contributed by Princi Singh
Complexity of the above Program:
Time Complexity: O(1) because constant operations are being performed
Auxiliary Space: O(1)
Method 2 – using Bitmasking: Another approach is to check among multiple groups of values and then create a bitmask of the values and then check for that bit to be set.
Program 2:
C++
// C++ program to compare a value
// with multiple values
#include <iostream>
using namespace std;
// Driver Code
int main()
{
// Create bitmasks
unsigned group_1 = (1 << 1) | (1 << 2) | (1 << 3);
unsigned group_2 = (1 << 4) | (1 << 5) | (1 << 6);
unsigned group_3 = (1 << 7) | (1 << 8) | (1 << 9);
// Values to be checked
int value_to_check = 9;
// Checking with created bitmask
if ((1 << value_to_check)
& group_1) {
cout << "found a match in group 1";
}
if ((1 << value_to_check)
& group_2) {
cout << "found a match in group 2";
}
if ((1 << value_to_check)
& group_3) {
cout << "found a match in group 3";
}
return 0;
}
Java
// Java program to compare a value
// with multiple values
import java.util.*;
class GFG{
// Driver Code
public static void main(String[] args)
{
// Create bitmasks
int group_1 = (1 << 1) |
(1 << 2) | (1 << 3);
int group_2 = (1 << 4) |
(1 << 5) | (1 << 6);
int group_3 = (1 << 7) |
(1 << 8) | (1 << 9);
// Values to be checked
int value_to_check = 9;
// Checking with created bitmask
if (((1 << value_to_check) &
group_1) > 0)
{
System.out.print("found a match " +
"in group 1");
}
if (((1 << value_to_check) &
group_2) > 0)
{
System.out.print("found a match " +
"in group 2");
}
if (((1 << value_to_check) &
group_3) > 0)
{
System.out.print("found a match " +
"in group 3");
}
}
}
// This code is contributed by shikhasingrajput
C#
// C# program to compare a value
// with multiple values
using System;
class GFG{
// Driver Code
public static void Main(String[] args)
{
// Create bitmasks
int group_1 = (1 << 1) |
(1 << 2) |
(1 << 3);
int group_2 = (1 << 4) |
(1 << 5) |
(1 << 6);
int group_3 = (1 << 7) |
(1 << 8) |
(1 << 9);
// Values to be checked
int value_to_check = 9;
// Checking with created
// bitmask
if (((1 << value_to_check) &
group_1) > 0)
{
Console.Write("found a match " +
"in group 1");
}
if (((1 << value_to_check) &
group_2) > 0)
{
Console.Write("found a match " +
"in group 2");
}
if (((1 << value_to_check) &
group_3) > 0)
{
Console.Write("found a match " +
"in group 3");
}
}
}
// This code is contributed by gauravrajput1
Javascript
<script>
// JavaScript program to compare a value
// with multiple values
// Create bitmasks
let group_1 = (1 << 1) |
(1 << 2) | (1 << 3);
let group_2 = (1 << 4) |
(1 << 5) | (1 << 6);
let group_3 = (1 << 7) |
(1 << 8) | (1 << 9);
// Values to be checked
let value_to_check = 9;
// Checking with created bitmask
if (((1 << value_to_check) &
group_1) > 0)
{
document.write("found a match " +
"in group 1");
}
if (((1 << value_to_check) &
group_2) > 0)
{
document.write("found a match " +
"in group 2");
}
if (((1 << value_to_check) &
group_3) > 0)
{
document.write("found a match " +
"in group 3");
}
// This code is contributed by unknown2108
</script>
Python3
# Python3 program to compare a value
# with multiple values
# Driver Code
if __name__ == '__main__':
# Create bitmasks
group_1 = (1 << 1) | (1 << 2) | (1 << 3)
group_2 = (1 << 4) | (1 << 5) | (1 << 6)
group_3 = (1 << 7) | (1 << 8) | (1 << 9)
# Values to be checked
value_to_check = 9
# Checking with created bitmask
if (((1 << value_to_check) & group_1) > 0):
print("found a match " + "in group 1")
if (((1 << value_to_check) & group_2) > 0):
print("found a match " + "in group 2")
if (((1 << value_to_check) & group_3) > 0):
print("found a match " + "in group 3")
# This code is contributed by gauravrajput1
Outputfound a match in group 3
Complexity of the above Program:
Time Complexity: O(1) because constant operations are being performed
Auxiliary Space: O(1)
Note: This approach works best for values that don’t exceed the natural size of your CPU. It would typically be 64 in modern times. The general solution to this problem using Template from C++11. Below is the program for the same:
Program 3:
C++
// C++ program for comparing variable
// with multiples variable
#include <algorithm>
#include <initializer_list>
#include <iostream>
using namespace std;
template <typename T>
// Function that checks given variable
// v in the list lst[]
bool is_in(const T& v,
std::initializer_list<T> lst)
{
return (std::find(std::begin(lst),
std::end(lst), v)
!= std::end(lst));
}
// Driver Code
int main()
{
// Number to be compared
int num = 10;
// Compare with multiple variables
if (is_in(num, { 1, 2, 3 }))
cout << "Found in group" << endl;
else
cout << "Not in group" << endl;
// Character to be compared
char c = 'a';
// Compare with multiple variables
if (is_in(c, { 'x', 'a', 'c' }))
cout << "Found in group" << endl;
else
cout << "Not in group" << endl;
return 0;
}
Java
import java.util.Arrays;
import java.util.List;
public class Main {
// Function that checks given variable
// v in the list lst
static <T> boolean is_in(T v, List<T> lst)
{
return lst.contains(v);
}
// Driver Code
public static void main(String[] args)
{
// Number to be compared
int num = 10;
// Compare with multiple variables
if (is_in(num, Arrays.asList(1, 2, 3)))
System.out.println("Found in group");
else
System.out.println("Not in group");
// Character to be compared
char c = 'a';
// Compare with multiple variables
if (is_in(c, Arrays.asList('x', 'a', 'c')))
System.out.println("Found in group");
else
System.out.println("Not in group");
}
}
C#
// C# program for the above approach
using System;
using System.Linq;
public static class Extensions
{
// Function that checks given variable
// v in the list lst[]
public static bool is_in<T>(this T[] array,
T target)
{
return array.Contains(target);
}
}
class GFG{
// Driver Code
static public void Main ()
{
// Number to be compared
int num = 10;
int [] arr = { 1, 2, 3 };
// Compare with multiple variables
if (arr.is_in(num))
Console.WriteLine("Found in group");
else
Console.WriteLine("Not in group");
// Character to be compared
char c = 'a';
char[] arr1 = { 'x', 'a', 'c' };
// Compare with multiple variables
if (arr1.is_in(c))
Console.WriteLine("Found in group");
else
Console.WriteLine("Not in group");
}
}
// This code is contributed by shubhamsingh10
Javascript
// Javascript code addition
// Function that checks given variable
// v in the array arr[]
function isIn(v, arr) {
return arr.includes(v);
}
// Driver Code
// Number to be compared
let num = 10;
// Compare with multiple variables
if (isIn(num, [1, 2, 3])) {
console.log("Found in group");
} else {
console.log("Not in group");
}
// Character to be compared
let c = 'a';
// Compare with multiple variables
if (isIn(c, ['x', 'a', 'c'])) {
console.log("Found in group");
} else {
console.log("Not in group");
}
// The code is contributed by Arushi Goel.
Python3
# Python program for above approach
import math
# Function that checks given variable
# v in the list lst[]
def is_in(v, lst):
return v in lst
# Driver Code
# Number to be compared
num = 10
# Compare with multiple variables
if (is_in(num, [1, 2, 3] )):
print("Found in group")
else:
print("Not in group")
# Character to be compared
c = 'a'
# Compare with multiple variables
if (is_in(c, ['x', 'a', 'c'] )):
print("Found in group")
else:
print("Not in group")
#This code is contributed by shubhamsingh10
OutputNot in group
Found in group
Complexity of the above Program:
Time Complexity: O(1) because constant operations are being performed
Auxiliary Space: O(1)
Note: It is not very efficient though when not used with primitive types. For std::string it will produce an error. This task became really easy with C++17, as it comes with Fold Expression. This is generally called Folding which helps to express the same idea with less code and it works well with any data type. Here, “||” operator to reduce all the Boolean results to a single one which is only False if all the comparison results False. Below is the program for the same:
Program 4:
C++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// Function that checks if the first argument is equal to any of the remaining arguments
template<typename T>
bool IsIn(T first, vector<T> values)
{
// Check if the first argument exists in the vector
return find(values.begin(), values.end(), first) != values.end();
}
int main()
{
// Number to be compared
int num = 10;
// Compare using the template
if (IsIn(num, { 1, 2, 3 }))
cout << "Found in group" << endl;
else
cout << "Not in group" << endl;
// String to be compared
string c = "abc";
// Compare using the template
if (IsIn(c, { "xyz", "bhy", "abc" }))
cout << "Found in group" << endl;
else
cout << "Not in group" << endl;
return 0;
}
Java
import java.util.Arrays;
import java.util.List;
public class Main {
// Function that checks if the first argument is equal to any of the remaining arguments
public static <T> boolean isIn(T first, List<T> values) {
// Check if the first argument exists in the list
return values.contains(first);
}
public static void main(String[] args) {
// Number to be compared
int num = 10;
// Compare using the template
if (isIn(num, Arrays.asList(1, 2, 3)))
System.out.println("Found in group");
else
System.out.println("Not in group");
// String to be compared
String c = "abc";
// Compare using the template
if (isIn(c, Arrays.asList("xyz", "bhy", "abc")))
System.out.println("Found in group");
else
System.out.println("Not in group");
}
}
C#
using System;
using System.Linq;
class Program
{
// Function that checks if the first argument is equal to any of the remaining arguments
static bool IsIn<T>(T first, params T[] values)
{
return values.Contains(first);
}
static void Main()
{
// Number to be compared
int num = 10;
// Compare using the template
if (IsIn(num, 1, 2, 3))
Console.WriteLine("Found in group");
else
Console.WriteLine("Not in group");
// String to be compared
string c = "abc";
// Compare using the template
if (IsIn(c, "xyz", "bhy", "abc"))
Console.WriteLine("Found in group");
else
Console.WriteLine("Not in group");
}
}
Javascript
// Function that checks if the given variable is in the list
function is_in(first, ...t) {
return t.includes(first);
}
// Driver Code
// Number to be compared
let num = 10;
// Compare using template
if (is_in(num, 1, 2, 3))
console.log("Found in group");
else
console.log("Not in group");
// String to be compared
let c = "abc";
// Compare using template
if (is_in(c, "xyz", "bhy", "abc"))
console.log("Found in group");
else
console.log("Not in group");
Python3
# Python program for comparing variable
# with multiple variables
# Function that checks given variable
# first in the list t[]
def is_in(first, *t):
return first in t
# Number to be compared
num = 10
# Compare using function
if is_in(num, 1, 2, 3):
print("Found in group")
else:
print("Not in group")
# String to be compared
c = "abc"
# Compare using function
if is_in(c, "xyz", "bhy", "abc"):
print("Found in group")
else:
print("Not in group")
Output:Â
Complexity of the above Program:
Time Complexity: O(1) because constant operations are being performed
Auxiliary Space: O(1)Â
Share your thoughts in the comments
Please Login to comment...