- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count pairs of characters in a string whose ASCII value difference is K
In this tutorial, we learn how to count the character pair in a string whose ASCII value is the difference of K. K is any difference value, it can be either 1 or 0. Create a C++ code to count such character pairs in an input string S. We used the size() method of the String class
Syntax
size() = It is a String class method. It is an empty parameter library method. It returns the size of the string in terms of bytes. string_name.size()
Example = s.size()
ASCII values are predefined values for characters, symbols, and others to be used for computer understanding.
The string used to count the pairs with ASCII difference of K (any defined value) contains only lower case alphabets.
Demonstration 1
Consider an example to understand the underlying key concept of the problem.
String = “abcb” K = 0
Output
= 1
The character pair with a 0 ASCII value difference is only one in the given string and that pair is (b, b).
Demonstration 2
String = “abcd” K = 1
Output
= 3
The character pairs with ASCII value difference of 1 is 3 and such pairs are (a, b), (b, c), (c, d).
Algorithm
Create an array for the occurrence of the character.
When K = 0 (ASCII value difference is 0 only in similar repeating characters). Add the count by using the formula: character[loop variable] * (character [loop variable] -1)/2
When K = 1. Add characters occurrence and add this value to the counting variable.
Return the counting variable.
Logic 1 Example
We are implementing the above algorithm by using C++ programming. We defined a countDifferencePairs() function to count the number of required pairs. The function will find the character pairs whose ASCII value difference is 0.
We used the macro MAX to define its value as 26 and whenever it is called in the program the preprocessor will change the MAX to 26.
#include <bits/stdc++.h> using namespace std; #define MAX 26 //user-defined function to count the number of required pairs with K difference int countDifferencePairs(string s, int x){ //This function returns the size of the string int l = s.size(); //Storing the character frequency int frq[MAX]; memset(frq, 0, sizeof frq); for (int i = 0; i < l; i++) frq[s[i] - 'a']++; //counter variable to count the number of pairs int cp = 0; //If the condition to check the ASCII difference is 0 or not if (x == 0){ for (int i = 0; i < MAX; i++) if (frq[i] > 1) cp += ((frq[i] * (frq[i] - 1)) / 2); } else { for (int i = 0; i < MAX; i++) if (frq[i] > 0 && i + x < MAX && frq[i + x] > 0) cp += (frq[i] * frq[i + x]);; } return cp; } // Controlling Part int main(){ string s = "abcda"; int x = 0; cout <<"Pairs with given ascii values are:"<< countDifferencePairs(s, x); return 0; }
Output
Pairs with given ascii values are: 1
Conclusion
In this tutorial, we develop an approach to counting the character pairs of an input string whose ASCII value difference is K. The K can be any value and in the C++ implementation example, we used a 0 difference value. We used the size() function of the string class. During the implementation, we considered only those character pairs of the input string whose ASCII value difference is 0.