There is a list of all the phone numbers available for country codes on Wikipedia. It is here
http://en.wikipedia.org/wiki/List_of_country_calling_codes
I would create two hashmaps. One with all the four digit codes and one containing both the two and three digit codes.
Hashmap fourdigitcodes;
//check if first digit is 7
if(firstdigit==7)
//country definitely russia
else
if country code begins with 1.
Check the first four digits are in the hashmap with four digit codes and return the value
if no value is found then answer is certainly usa.
otherwise
String country="";
HashMap<String,String> ccode = new HashMap<String,String>();
ccode.put("353","Ireland");//List all country codes
ccode.put("49","Germany");
String value = ccode.get("49");//See if I have a value for the first 2 digits
if(value != null){
country = value; //If I found a country for the first two digits we are done as the first two digits of the country code consisting of two digits cannot be in a country code with 3
}else{
the country is certainly 3 digit. return the first three digits by entering the first 3 digits as the key of the hashmap countaining the first three digits.
}
In summary. If first digit is 7 Russian.
If it is 1 check in the hashmap of four digit codes for the first four numbers
if found a four digit code return the corresponding country.if not answer is USA
otherwise check first two digits in the hashmap containing the 2 or 3 digits. If found two then return the answer other it is certainly a three digit code and return the corresponding country from the hash.
It will be tedious to make the hashmap but I think an efficient solution.