process_str(StringBuilder copy, List<Integer> idxList) { for(int i = 0; i < idxList.size(); ++i) { int pos = idxList.get(i); copy.setCharAt(pos, '$'); } StringBuilder output = new StringBuilder(); for(int i = 0; i < copy.length(); ++i) { char ch = copy.charAt(i); if(ch != '$') output.append(ch); } return output.toString(); }
Constraint – $ does not appear in the input string. Is there a simpler way to do this?
Advertisement
Answer
You can remove the first loop like this:
process_str(StringBuilder copy, List<Integer> idxList) { StringBuilder output = new StringBuilder(); for(int i = 0; i < copy.length(); ++i) { char ch = copy.charAt(i); if (idxList.contains(i)) output.append(ch); } return output.toString(); }
The overall time complexity might be different depending on what type of List
you use.