找相应位置

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Scanner;

/**
 * 对给定的一个字符串,找出有重复的字符,并给出其位置, 如:abcaaAB12ab12
 * 输出:a,1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13
 *
 * :这种找位置的使用map一一对应
 * 虽然实现这部分代码,但是却没有想出解决顺序的方案
 * @author kif
 *
 */
public class FindSeat {

	public static void findSeat(String str) {
		LinkedHashMap<Character, StringBuffer> map = new LinkedHashMap<Character, StringBuffer>();
		for(int i = 0 ; i < str.length() ; i++){
			Character ch = str.charAt(i);

			if(map.containsKey(ch)){
				StringBuffer strbuf = map.get(ch);
				map.remove(ch);
				strbuf.append(":"+i);
				map.put(ch, strbuf);
			}else{
				map.put(ch, new StringBuffer(i+""));
			}
		}

		Iterator iter = map.keySet().iterator();
		while(iter.hasNext()){
			Object obj = iter.next();
			//获取每个键相对应的值
			String strs = map.get((Character)obj).toString();
//			System.out.println(strs);
			String st[] = strs.split(":");
			for(String s : st){
				System.out.print(obj+"-"+s+",");
			}
			System.out.println();
		}

	}

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);
		String str = input.nextLine();
		FindSeat.findSeat(str);
		input.close();
	}

}
时间: 2024-10-11 00:59:43

找相应位置的相关文章

输入数字个数以及要找的位置,输出以字典序为准的那个数

输入 12 4 输出 12 1,10,11,12,2,3,4,5,6,7,8,9 c++的...哎...JRTT第一题 #include <iostream> #include<string> #include <cstring> #include<vector> #include<sstream> #include<algorithm> #include <stdlib.h> #include <stdio.h&g

HUAWEI TAG-AL00 找IMEI的过程

前几天,遇到一台华为机型,IMEI获取有问题,然后就找了一下. 以下是解决过程,权当记录一下,尽管为知笔记已经有备份了 :) 0x01: 起因 测试小哥发现,一台机型IMEI获取不全,有问题,拨号页面获取出来 MEID/IMEI1/IMEI2 而我们只能获取 其中两个,丢了一个   然后抱着手机过来问能不能处理一下,型号为: HUAWEI TAG-AL00 我抱着试试看的态度,跑了一下之前获取方式,果然少了一个,然后就开始找哪里出了问题. 0x02:过程 a. 准备工作,找apk文件和位置 既然

[算法]找出单链表中的倒数第k个元素

找出单链表中的倒数第k个元素 解题思路: 为了求出链表中的倒数第k个元素,最容易想到的方法是首先遍历一遍单链表,求出整个单链表的长度n,然后将倒数第k个,转换为正数第n-k个,接下去遍历一次就可以得到结果.不过这种方法需要对链表进行两次遍历,第一次遍历用于求解单链表的长度,第二次遍历用于查找正数第n-k个元素. 如果沿从头至尾的方向从链表中的某个元素开始,遍历k个元素刚好到达链表尾,那么元素就是要找的倒数第k个元素.设计如下:依次对链表的每一个结点元素进行这样的测试,遍历k个元素,查看是否到达链

如何找出单链表中的倒数第k个元素

(1)方法1:首先遍历一遍单链表,求出整个单链表的长度n,然后将倒数第k个,转换为正数第n-k个,接下去遍历一次就可以得到结果.但该算法需要对链表进行两次遍历,第一次遍历用于求解单链表的长度,第二次遍历用于查找正数第n-k个元素. (2)方法2:如果沿着从头到尾的方向,从链表中的某个元素开始,遍历k个元素后刚好达到链表尾,那么该元素就是要找的倒数第k个元素.根据这一性质,可以设计如下算法:从头节点开始,一次对链表的每一个节点元素进行这样的测试,遍历k个元素,查看是否到达链表尾,直到找到那个倒数第

通过代码审计找出网站中的XSS漏洞实战(三)

一.背景 笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘.工具挖掘.代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为快速找出网站中可能存在的XSS漏洞实践(一)https://segmentfault.com/a/1190000016095198 本文主要记录通过代码审计的方式进行XSS漏洞挖掘,分为了找出关键位置,正向审计,反向审计三个部分,审计的系统为permeate渗透测试系统,测试系统的搭建可以参考笔者的

Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)

原文:http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量) 用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读.在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值.接着判断当前目录下是否存在bin\catalina.bat,如果文件

MYSQL主从复制部署流程

环境准备: 部署一主一从两台服务器,实现主从复制,主库要开启binlog,主库和从库的Server-id要不同 主库: [[email protected] ~]# hostname -I 10.0.0.51 172.16.1.51 [[email protected] ~]# egrep "log_bin|server-id" /etc/my.cnf server-id = 1                #主库的Server-id log_bin = mysql-bin    #

链表操作法则之逆向遍历与倒置算法

一.创建链表: 对链表进行操作的所有算法的前提,就是我们首先要创建一个链表,我们可以选择正向建链和逆向建链: (一).正向建链: 首先,我们得自定义节点类型: typedef struct Node { int data;//数据域 struct Node * pNext;//指针域 }NODE,*PNODE; 通过数组进行链表数据域的赋值: int main (void) { PNODE pHead;//头指针,接收创建链表时返回的头结点地址 int a[8] = {12,37,49,65,2

使用HTML5 API(AudioContext)实现可视化频谱效果

HTML5 可视化频谱效果 如今的HTML5技术正让网页变得越来越强大,通过其Canvas标签与AudioContext对象可以轻松实现之前在Flash或Native App中才能实现的频谱指示器的功能. Demo: Cyandev Works - HTML5 Audio Visualizing 开始使用AudioContext The AudioContext interface represents an audio-processing graph built from audio mod