哔哩哔哩2019秋招笔试试题二——脸滚键盘

哔哩哔哩2019秋招笔试试题二——脸滚键盘

题目来自牛客网,感谢!

av394281 中,充满威严的蕾米莉亚大小姐因为触犯某条禁忌,被隙间妖怪八云紫(紫m……èi)按住头在键盘上滚动。
同样在弹幕里乱刷梗被紫姐姐做成罪袋的你被指派找到大小姐脸滚键盘打出的一行字中的第 k个仅出现一次的字。
(为简化问题,大小姐没有滚出 ascii 字符集以外的字)

输入格式

若干行,每行输入一个字符串,字符串由一个数字k,一个半角空格,待查找的字符串组成。

输出格式

每行输出查找到的字符c,以[c]的形式输出。若未查找到,输出Myon~

输入范例

2 misakamikotodaisuki
3 !bakabaka~ bakabaka~ 129!
3 3.1415926535897932384626433832795028841971693993751o582097494459211451488946419191919l91919hmmhmmahhhhhhhhhh
7 www.bilibili.com/av170001
1 111

输出范例

[d]
[9]
[l]
[7]
Myon~

B站的题目二次元浓度实在太高了,受不住受不住

从字符串开头开始逐字符检索,以该字符为起点检索下一个该字符,成功则加入列表进行排除,失败则进行一次计数

我的代码实现

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class SearchK {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		List<String> list = new ArrayList<String>();
		String s = null;
		while (sc.hasNextLine() && !((s = sc.nextLine()).equals("")))
			list.add(s);
		sc.close();

		label: for (String e : list) {
			int k = Integer.parseInt(e.substring(0, e.indexOf(" ")));
			String str = e.substring(e.indexOf(" ") + 1);
			List<Character> l = new ArrayList<Character>();
			for (int i = 0; i < str.length(); i++) {
				char c = str.charAt(i);
				if (l.contains(c))
					continue;
				if (str.indexOf(String.valueOf(c), i + 1) == -1) {
					if (--k == 0) {
						System.out.println("[" + c + "]");
						continue label;
					}
				} else
					l.add(c);
			}
			System.out.println("Myon~");
		}
	}
}

你可能感兴趣的:(java)