Amazon Interview Question
Testing / Quality AssurancesCountry: United States
String [] strArray = new String [] {"Om", "Om","Shankar","Tripathi", "Tom", "Jerry", "Jerry"};
HashMap<String, Integer> map = new HashMap<String, Integer>();
for(String arrVal: strArray)
{
map.put(arrVal, map.containsKey(arrVal) ? map.get(arrVal)+1 : 1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if(entry.getValue()>1){
String key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + ":"+value);
}
}
import java.util.HashSet;
public class NumberOfDuplicateChars {
public static void main(String[] args) {
String [] strArray = new String [] {"Om", "Om","Shankar","Tripathi", "Tom", "Jerry", "Jerry"};
int count = 0;
HashSet<String> hs = new HashSet<String>();
for(String s : strArray)
{
if(!hs.add(s))
count++;
}
System.out.println(strArray.length - hs.size());
//OR
System.out.println(count);
}
}
So this depends on whether or not you're finding the duplicates of one substring in a longer string sentence, or finding any substring in the sentence that has duplicates and how many. This is the latter way in Python from my experience.
def dupeStrings(arr):
counts = {}
for each in arr:
if arr.count(each) > 1:
counts[each] = arr.count(each)
return counts
Passing any array of strings will return a dictionary with the word name and the number of duplicates found.
String [] strArray = new String [] {"Om", "Om","Shankar","Tripathi", "Tom", "Jerry", "Jerry"};
HashMap<String, Integer> map = new HashMap<String, Integer>();
for(String arrVal: strArray)
{
map.put(arrVal, map.containsKey(arrVal) ? map.get(arrVal)+1 : 1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if(entry.getValue()>1){
String key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + ":"+value);
}
}
public int getDuplicateCount(T[] arr){
if(arr == null) return 0;
boolean[] grid= new boolean[arr.length] ;
int count=0; int nullcount=0;
for (T t : arr) {
if(null == t){
nullcount++;
continue;
}
int idx = t.hashCode()%arr.length;
if(grid[idx]){
count++;
}else{
grid[idx]= true;
}
}
return count;
}
public int getDuplicateCount(T[] arr){
if(arr == null) return 0;
boolean[] grid= new boolean[arr.length] ;
int count=0; int nullcount=0;
for (T t : arr) {
if(null == t){
nullcount++;
continue;
}
int idx = t.hashCode()%arr.length;
if(grid[idx]){
count++;
}else{
grid[idx]= true;
}
}
return count;
}
package com.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class Count_CharMap {
public static void main(String[] args) {
try
{
FileInputStream file = new FileInputStream("D:\\trial.txt");
DataInputStream dis = new DataInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(dis));
// System.out.println(br.readLine());
String Contents="";
String str="";
while ((Contents = br.readLine()) != null) {
str+=Contents;
}
char[]char_array =str.toCharArray();
System.out.println(char_array);
// int count = 0;
Map<Character,Integer> charCounter=new HashMap<Character,Integer>();
for(int i=0;i<str.length();i++)
{
System.out.print(char_array[i]);
char ch = char_array[i];
if(charCounter.containsKey(char_array[i]))
{
charCounter.put(ch, charCounter.get(ch)+1);
// count++;
}
else
{
charCounter.put(ch, 1);
// count++;
}
}
System.out.println(charCounter);
for(Character key:charCounter.keySet())
{
System.out.println(key+""+charCounter.get(key));
}
System.out.print("\n");
new File("D:/Java").mkdir();
File statText = new File("D:/Java/statsTest.txt");
FileOutputStream is = new FileOutputStream(statText);
OutputStreamWriter osw = new OutputStreamWriter(is);
Writer w = new BufferedWriter(osw);
for(Character key:charCounter.keySet())
{
w.write(key+"="+charCounter.get(key)+"\n");
w.append(System.lineSeparator());
// w.write("\n");
}
// w.write("POTATO!!!"+ new Date());
// w.write(h);
w.close();
}
catch(IOException e1){
System.out.println(e1);
}
}
}
// Written in javascript
var arr = ['ab', 'cd', 'ab', 'drj', 'jr', 'jr'];
Array.prototype.contains = function(obj){
for(let i=0; i<this.length; i++){
if(this[i]===obj)
return true;
}
return false;
}
var dupStr = function(arr){
let temp = [];
for(let i=0; i<arr.length; i++){
if(!temp.contains(arr[i]))
temp.push(arr[i]);
}
console.log(arr.length - temp.length);
}
dupStr(arr);
String [] strArray = new String [] {"Om", "Om","Shankar","Tripathi", "Tom", "Jerry", "Jerry"};
int counter=0;
for (int i = 0; i < strArray.length; i++) {
for (int j = i+1; j < strArray.length; j++) {
if(strArray[i].equals(strArray[j])){
counter++;
break;
}
}
}
System.out.println(counter);
String [] strArray = new String [] {"Om", "Om","Shankar","Tripathi", "Tom", "Jerry", "Jerry"};
int counter=0;
for (int i = 0; i < strArray.length; i++) {
for (int j = i+1; j < strArray.length; j++) {
if(strArray[i].equals(strArray[j])){
counter++;
break;
}
}
}
System.out.println(counter);
String [] strArray = new String [] {"Om", "Om","Shankar","Tripathi", "Tom", "Jerry", "Jerry"};
- Anonymous September 29, 2016HashMap<String, Integer> map = new HashMap<String, Integer>();
for(String arrVal: strArray)
{
map.put(arrVal, map.containsKey(arrVal) ? map.get(arrVal)+1 : 1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if(entry.getValue()>1){
String key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + ":"+value);
}
}