Solved

firstChar challenge

Posted on 2016-09-30
13
86 Views
Last Modified: 2016-10-06
Hi,

I am working on below challenge.

http://codingbat.com/prob/p168493

Given an array of non-empty strings, return a Map<String, String> with a key for every different first character seen, with the value of all the strings starting with that character appended together in the order they appear in the array.

firstChar(["salt", "tea", "soda", "toast"]) → {"t": "teatoast", "s": "saltsoda"}
firstChar(["aa", "bb", "cc", "aAA", "cCC", "d"]) → {"d": "d", "b": "bb", "c": "cccCC", "a": "aaaAA"}
firstChar([]) → {}

i was not clear on above description. please advise
0
Comment
Question by:gudii9
  • 7
  • 5
13 Comments
 
LVL 11

Expert Comment

by:tel2
ID: 41824327
Hi gudii9,

> "i was not clear on above description. please advise"

Unless you tell us which parts of the description you are not clear on, it's a bit hard for us to know how to advise you.  Do you expect us to rewrite the entire description and hope that you understand our version?

So, instead of making this a guessing game for us, please be specific.  We're expert programmers, not expert mind readers.

Thanks.
tel2
1
 
LVL 7

Author Comment

by:gudii9
ID: 41826815

Given an array of non-empty strings, return a Map<String, String> with a key for every different first character seen, with the value of all the strings starting with that character appended together in the order they appear in the array.

firstChar(["salt", "tea", "soda", "toast"]) → {"t": "teatoast", "s": "saltsoda"}

why only character key s taken but not a/l/t in the salt??
0
 
LVL 32

Expert Comment

by:phoffric
ID: 41826847
>> why only character key s taken but not a/l/t in the salt??

No particular reason. These challenges are sometimes testing your algorithm skills. In this case, the question is just testing your MAP and string skills. The question variants could have said take the first two chars for the key unless the third char (if it exists) is 'z', in which case "z" is the string key.

These questions are just exercises to make you stronger. But they may not have any value in professional programming on the job. (But making you stronger is, of course, very valuable - I am not saying that you should stop working these challenges.)
0
 
LVL 7

Author Comment

by:gudii9
ID: 41826968
every different first

i missed first in description
0
 
LVL 7

Author Comment

by:gudii9
ID: 41826988
let me think
0
 
LVL 7

Author Comment

by:gudii9
ID: 41830626
public Map < String, String > firstChar(String[] strings) {

    Map < String, String > map = new HashMap < String, String > ();

    for (int i = 0; i < strings.length; i++) {

        String k = String.valueOf(strings[i].charAt(0));

        if (map.containsKey(k)) {
            String val = map.get(k) + strings[i];
            map.put(k, val);
        } else {
            map.put(k, strings[i]);
        }

    }
    return map;
}

Open in new window


i pass all tests. any improvements or alternate approaches?
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 32

Expert Comment

by:phoffric
ID: 41831025
Looks good. Maybe save a few keystrokes:
Map < String, String > map = new HashMap();
0
 
LVL 32

Accepted Solution

by:
phoffric earned 500 total points
ID: 41831142
And, of course, as already explained in other questions, you can change the for-loop so that you do not need the counter, i.
0
 
LVL 7

Author Comment

by:gudii9
ID: 41832124
public Map<String, String> firstChar(String[] strings) {
   
  Map<String, String> map = new HashMap();
   
 // for (int i = 0; i < strings.length; i++) {
 for(String str:strings)
     
    String k = String.valueOf(str.charAt(0));
     
    if (map.containsKey(k)) {
      String val = map.get(k) + strings[i];
      map.put(k, val);
    } else {
      map.put(k, strings[i]);
    }
     
  }
  return map;
}

Open in new window


above gives below error
Compile problems:


Error:      String k = String.valueOf(str.charAt(0));
      ^^^^^^
Syntax error, insert "AssignmentOperator ArrayInitializer" to complete ArrayInitializerAssignement


see Example Code to help with compile problems

please advise
0
 
LVL 7

Author Comment

by:gudii9
ID: 41832135
public Map<String, String> firstChar(String[] strings) {
   
  Map<String, String> map = new HashMap();
   
 // for (int i = 0; i < strings.length; i++) {
 for(String str:strings){
     
    String k = String.valueOf(str.charAt(0));
     
    if (map.containsKey(k)) {
      String val = map.get(k) + str;
      map.put(k, val);
    } else {
      map.put(k, str);
    }
     
  }
  return map;
}

Open in new window



i corrected it. missed { and also used strings[i] at one place

Open in new window

0
 
LVL 32

Expert Comment

by:phoffric
ID: 41832214
>> i corrected it.
Excellent!
0
 
LVL 32

Expert Comment

by:phoffric
ID: 41832229
I am not against temporary variables, which good compilers will optimize away. And, when debugging a problem, temp variables are very helpful. But some projects hate them. So, if you see something like this, it is due to their hatred.
      // String val = map.get(k) + str;
      map.put(k, map.get(k) + str);

Open in new window

0
 
LVL 7

Author Comment

by:gudii9
ID: 41832315
i see your point
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now