gudii9
asked on
firstChar challenge
Hi,
I am working on below challenge.
http://codingbat.com/prob/p168493
i was not clear on above description. please advise
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
ASKER
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??
>> 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.)
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.)
ASKER
every different first
i missed first in description
ASKER
let me think
ASKER
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;
}
i pass all tests. any improvements or alternate approaches?
Looks good. Maybe save a few keystrokes:
Map < String, String > map = new HashMap();
Map < String, String > map = new HashMap();
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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;
}
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
ASKER
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;
}
i corrected it. missed { and also used strings[i] at one place
>> i corrected it.
Excellent!
Excellent!
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);
ASKER
i see your point
> "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