字符串中重复字符的下标打印
使用LinkedHashMap来把字符串中每种字符的下标存储到对应的集合中。
利用LinkedHashMap的有序性(提取元素和添加元素的顺序一致)来直接生成答案
public static void printIndexes(String str){
LinkedHashMap<Character, List<Integer>> IndexSet = new LinkedHashMap<>();
for(int i=0;i<str.length();i++){
Character c = str.charAt(i);
if(!IndexSet.containsKey(c)){
IndexSet.put(c, new ArrayList<Integer>());
}
IndexSet.get(c).add(i);
}
StringBuilder sb = new StringBuilder();
for(char key:IndexSet.keySet()){
List<Integer> values = IndexSet.get(key);
if(values.size()>1){
for(int i:values) {
sb.append(key+","+i+",");
}
}
}
sb.deleteCharAt(sb.length()-1);
System.out.println(sb);
}
String str = "afcacbcbcki";
printIndexes(str);
a,0,a,3,c,2,c,4,c,6,c,8,b,5,b,7
利用LinkedHashMap的有序性(提取元素和添加元素的顺序一致)来直接生成答案
public static void printIndexes(String str){
LinkedHashMap<Character, List<Integer>> IndexSet = new LinkedHashMap<>();
for(int i=0;i<str.length();i++){
Character c = str.charAt(i);
if(!IndexSet.containsKey(c)){
IndexSet.put(c, new ArrayList<Integer>());
}
IndexSet.get(c).add(i);
}
StringBuilder sb = new StringBuilder();
for(char key:IndexSet.keySet()){
List<Integer> values = IndexSet.get(key);
if(values.size()>1){
for(int i:values) {
sb.append(key+","+i+",");
}
}
}
sb.deleteCharAt(sb.length()-1);
System.out.println(sb);
}
String str = "afcacbcbcki";
printIndexes(str);
a,0,a,3,c,2,c,4,c,6,c,8,b,5,b,7
全部评论
相关推荐
11-03 18:30
湖南大学 游戏策划
嵌入式的小白:其实说句实话,这个福利背后是后一套逻辑的
1.公司食堂提供免费的早餐,但不会提供到比如10点,这样大家就会早点来公司
2.食堂提供宵夜,也是同样的道理,想让员工晚上加班
3.提供健身房,也是希望看能不能把大家吸引来周末加班
4.有宿舍的,这个宿舍一般不会很远的,缩短在路上的耗时,更多的时间就放在公司上了
巨人网络公司福利 91人发布 点赞 评论 收藏
分享
牛客96609213...:疯狂背刺,之前还明确设置截止日期,还有笔试,现在一帮人卡在复筛,他反而一边开启扩招,还给扩招的免笔试,真服了,你好歹先把复筛中的给处理了再说 点赞 评论 收藏
分享
查看16道真题和解析