Strings: Check if Word Equals Summation of Two Words

Problem Statement:

You are given 3 words. You need to check if the summation of the letters lead up to third word.

Example

Input: s1 = “acb”, s2 = “cba”, s3 = “cdb”
Output: true

s1 = “acb” -> 0 2 1
s2 = “cba” -> 2 1 0
s3 = “cdb” -> 2 3 1

s1 + s2 = s3
21 + 210 = 231

Solution

The solution is very simple.

Note that, we should not take the ascii value, but to take the position of the alphabets.

a -> 0
b -> 1

z -> 25

So, what we do is, we will subtract the ‘a’ value with the given letter. We will get the required position.

Example:

For acb,

a – a = 0
c – a = 2
b – a = 1

 

Solution in C++

#include <algorithm>  
#include <iostream>    
#include <string>
#include <stack>
#include <vector>
#include <unordered_map> 
#include <queue> 

using namespace std;

bool is_sum_equal(string firstWord, string secondWord, string targetWord) 
{
    int first=0,second=0,target=0;

    for(int i=0;i<firstWord.size();i++)
        first = first*10 + (firstWord[i]-'a');
    
    for(int i=0;i<secondWord.size();i++)
        second = second*10 +(secondWord[i]-'a');
    
    for(int i=0;i<targetWord.size();i++)
        target = target*10 +(targetWord[i]-'a');
    
    
    return first+second == target;
}
  
int main() 
{ 
      
string s1 = "acb"; 
string s2 = "cba"; 
string s3 = "cdb"; 
  
  if(is_sum_equal(s1, s2, s3)){
    cout<<"Sum are equal"<<endl;
  } else {
    cout<<"Sum are not equal"<<endl;
  }
  
return 0; 
} 

Output:

Sum are equal

 

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *