392. 判断子序列
/*** Copyright (C), 2018-2020* FileName: isSubsequence392* Author: xjl* Date: 2020/7/27 9:04* Description: 392. 判断子序列*/
package Array;import org.junit.Test;import java.util.ArrayList;
import java.util.HashMap;public class isSubsequence392 {public boolean isSubsequence(String s, String t) {int i = 0;int j = 0;while (i < s.length() && j < t.length()) {if (s.charAt(i) == t.charAt(j)) {i++;}j++;}return i == s.length();}public boolean isSubsequence1(String s, String t) {HashMap<Character, ArrayList<Integer>> map = new HashMap<>();for (int i = 0; i < t.length(); i++) {if (!map.containsKey(t.charAt(i))) {//如果是不存在的话ArrayList<Integer> list = new ArrayList<>();list.add(i);map.put(t.charAt(i), list);} else {//如果是存在的话ArrayList<Integer> list = map.get(t.charAt(i));list.add(i);map.put(t.charAt(i), list);}}int index = -1;for (int i = 0; i < s.length(); i++) {int flag = 0;ArrayList<Integer> list = map.get(s.charAt(i));if (list == null) {return false;}for (int V : list) {if (V > index) {flag = 1;index = V;break;}}if (flag == 0) {return false;}}return true;}@Testpublic void test() {boolean subsequence = isSubsequence1("acb","ahbgdc");System.out.println(subsequence);}
}
大数据相加:
/*** Copyright (C), 2018-2020* FileName: MaxStringsum* Author: xjl* Date: 2020/7/27 12:57* Description: 大数相加的和*/
package Array;import java.util.ArrayList;
import java.util.Scanner;public class MaxStringsum {public static void main(String[] args) {//数据的输入Scanner sc = new Scanner(System.in);String nums1 = sc.nextLine();String nums2 = sc.nextLine();//函数的调用String result = testmax(nums1, nums2);//结果的打印System.out.println(result);}private static String testmax(String nums1, String nums2) {nums1 = new StringBuffer(nums1).reverse().toString();nums2 = new StringBuffer(nums2).reverse().toString();//设置两个相同的数组存放数字int[] array1 = new int[nums1.length()];int[] array2 = new int[nums2.length()];for (int i = 0; i < array1.length; i++) {array1[i] = nums1.charAt(i) - '0';}for (int i = 0; i < array2.length; i++) {array2[i] = nums2.charAt(i) - '0';}//存放结果ArrayList<Integer> list = new ArrayList<>();int i = 0;int j = 0;//进位int current = 0;int a = 0, b = 0;while (i < array1.length || j < array2.length) {if (i == array1.length) {a = 0;} else {a = array1[i++];}if (j == array2.length) {b = 0;} else {b = array2[j++];}int sum = a + b + current;current = sum / 10;list.add(sum % 10);}if (current == 1) {list.add(current);}String res = "";for (int V : list) {res += String.valueOf(V);}return new StringBuffer(res).reverse().toString();}
}