百度2017秋招-相似串

来源:互联网 发布:诺可可网络 编辑:程序博客网 时间:2024/06/07 16:09

题目大意:给你一个字符串helloworld,然后让你给出一个相似的串,相似串整体上字母顺序从左到右出现,且与原字符串对应的位置的字符都要一致。则helloworld对应的相似串为abccdedfcg。

解题思路:先建立一个hashMap,让原字符串找到对应的字符。例如:h-a,e-b,l-c以此类推。然后再遍历原字符串,输出相应的相似串即可。

package 百度;import java.util.HashMap;import java.util.Scanner;/** * @题目描述:S和T是两个字符串(它们只由小写字母构成),定义S与T相似当且仅当: 1、S和T长度相同。 * 2、对于任意两个位置i和j,如果Si和Sj相同,那么Ti和Tj相同;如果Si和Sj不同,那么Ti和Tj不同。 * (Si的含义为字符串S在第i个位置的字符,Ti的含义为字符串T在第i个位置的字符) * 与字符串”abca”相似的串有”abca”,”cdac”,”zetz”等,现在给出一个字符串S,输出与之相似的字典序最小的串。 *  * @样例输入:helloworld * @样例输出:abccdedfcg *  * @author 崔洪振367 * @version 创建时间:2017年4月22日 下午10:33:30 */public class Q2017秋招_相似串 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);HashMap<Character, Character> hashMap = new HashMap<>();while (scanner.hasNext()) {String string = scanner.next();// 原字符串int len = string.length();int k = 0;for (int i = 0; i < len; i++) {//先找出原字符和字典序中字符的对应关系char c = string.charAt(i);if (hashMap.size() == 0) {char cc = (char) ((int) 'a' + k);//原字符所对应的字典序中的字符k++;hashMap.put(c, cc);//将对应关系添加到hashMap中} else {if (!hashMap.containsKey(c)) {char cc = (char) ((int) 'a' + k);k++;hashMap.put(c, cc);}}}char[] cs = string.toCharArray();//原字符数组StringBuffer sb = new StringBuffer();for (char c : cs) {char ccc = hashMap.get(c);sb.append(ccc);}System.out.println(sb.toString());}scanner.close();}}

0 0
原创粉丝点击