Distinct state codes that appear in a string as contiguous sub-strings

Every state is represented by string of length 2. For example DL is used for Delhi, HP for Himachal Pradesh, UP for Uttar Pradesh, PB for Punjab etc.
Given a string str consisting of uppercase English alphabets only, the task is to find the number of distinct state codes that appear in the string as contiguous sub-strings.

Examples:

Input: str = “UPBRC”
Output: 4
UP, PB, BR and RC are 4 different state codes that appear in string as contiguous sub-strings.



Input: str = “UPUP”
Output: 2
UP and PU are the only state codes that appear in the given string.

Approach: Store every sub-string of length 2 in a set and finally return the size of the set which is the required number of distinct state codes appearing in the given string as sub-strings.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to return the count of
// distinct state codes
int countDistinctCode(string str)
{
    set<string> codes;
    for (int i = 0; i < str.length() - 1; i++)
  
        // Insert every sub-string
        // of length 2 in the set
        codes.insert(str.substr(i, 2));
  
    // Return the size of the set
    return codes.size();
}
  
// Driver code
int main()
{
    string str = "UPUP";
    cout << countDistinctCode(str);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the above approach.
import java.util.*;
  
class GFG 
{
  
// Function to return the count of
// distinct state codes
static int countDistinctCode(String str)
{
    Set<String> codes = new HashSet<>();
    for (int i = 0; i < str.length() - 1; i++)
  
        // Insert every sub-String
        // of length 2 in the set
        codes.add(str.substring(i, i + 2));
  
    // Return the size of the set
    return codes.size();
}
  
// Driver code
public static void main(String[] args)
{
    String str = "UPUP";
    System.out.println(countDistinctCode(str));
}
}
  
// This code has been contributed by 29AjayKumar

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of the approach 
  
# Function to return the count of 
# distinct state codes 
def countDistinctCode(string): 
  
    codes = set()
    for i in range(0, len(string) - 1): 
  
        # Insert every sub-string 
        # of length 2 in the set 
        codes.add(string[i:i + 2]) 
  
    # Return the size of the set 
    return len(codes) 
  
# Driver code 
if __name__ == "__main__"
  
    string = "UPUP"
    print(countDistinctCode(string)) 
  
# This code is contributed 
# by Rituraj Jain

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the above approach. 
using System;
using System.Collections.Generic;
  
class GFG 
  
// Function to return the count of 
// distinct state codes 
static int countDistinctCode(String str) 
    HashSet<String> codes = new HashSet<String>(); 
    for (int i = 0; i < str.Length - 1; i++) 
  
        // Insert every sub-String 
        // of length 2 in the set 
        codes.Add(str.Substring(i,2)); 
  
    // Return the size of the set 
    return codes.Count; 
  
// Driver code 
public static void Main(String []args) 
    String str = "UPUP"
    Console.Write(countDistinctCode(str)); 
  
// This code has been contributed by Arnab Kundu

chevron_right


Output:

2


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.