PHONELST - Phone List - SPOJ Solution C++

  Problem Link : PHONELST  


👉 Hint : edit please

 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;

struct TrieNode
{
	struct TrieNode *children[10];
	bool isEndOfWord;
};
typedef struct TrieNode TNODE;

bool flag;

TNODE *CreateNewNode()
{
	TNODE * node=(TNODE *)malloc(sizeof(TNODE));
	for(int i=0;i<10;i++)
		node->children[i]=NULL;
	node->isEndOfWord=0;
	return node;
}

void insert(TNODE * root,string s)
{
	TNODE *current=root;
	for(int i=0;i<s.length();i++)
	{
		if(i==s.length()-1 && current->children[s[i]-'0'] != NULL)
		{
			flag=1;
			return;
		}
        if(current->isEndOfWord==1)
        {
            flag=1;
            return;
        }
		
		if(current->children[s[i]-'0']==NULL)
		{
			TNODE *newNode=CreateNewNode();
			current->children[s[i]-'0']=newNode;
		}
		current=current->children[s[i]-'0'];

	}
	current->isEndOfWord=1;  //True
}

int main()
{
    int n,t;
    cin>>t;
    string s;
    while(t--)
    {
    	flag=0;
    	TNODE *root=CreateNewNode();
    	root->isEndOfWord=0;
    	cin>>n;
    	while(n--)
    	{
    		cin>>s;
    		insert(root,s);
    	}
    	if(flag)
    		cout<<"NO\n";
    	else
    		cout<<"YES\n";

    }

	   




}

 

Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook. 

😇Happy Learning!!