阿里笔试2020-3-27
第一题【AC】
要求:将字符串s1转换为s2,
转换规则:每次可以将s1中的任意一个字符移动到s1的末尾
目的:求最少的改变次数时,s1转换为s2
比如
输入:
acdk
ckad
输出:
2
思路:
1、先判断s1,s2长度是否相等,不相等直接输出-1;
2、再判断s1,s2拥有的字符是否一致,不一致直接输出-1:
3、步骤3有点不好形容,见下图吧,只要遍历一下s1,查找在s2中有哪些匹配就好了,
代码
public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s1 = sc.nextLine(); String s2 = sc.nextLine(); fun(s1, s2); } public static void fun(String s1, String s2) { if (s1.length() != s2.length()) { System.out.println(-1); return; } char[] chars1 = s1.toCharArray(); char[] chars2 = s2.toCharArray(); Arrays.sort(chars1); Arrays.sort(chars2); for (int i = 0; i < chars1.length; i++) { if (chars1[i] != chars2[i]) { System.out.println(-1); return; } } int index2 = 0; for (int i = 0; i < s1.length(); i++) { if (s1.charAt(i) == s2.charAt(index2)) { index2++; } } int res = s2.length() - index2; System.out.println(res); }
第二题
没有出来,
直接输出1,过了5%,哈哈。
还得好好复习啊,大家加油!!!!
#阿里笔试##笔试题目#