LeetCode Weekly Contest 220
1694. Reformat Phone Number
通过对字符串长度对3取模进行分析。
public String reformatNumber(String number) { number = number.replaceAll("-", ""); number = number.replaceAll(" ", ""); int len = number.length(); StringBuilder str = new StringBuilder(); if (len % 3 == 0) { int index = 1; for (int i = 0; i < len; i++) { str.append(number.charAt(i)); if (index % 3 == 0 && i < len - 1) { str.append("-"); index = 0; } index++; } } if (len % 3 == 1) { int n = (len / 3); int time = (n - 1) * 3; int index = 1; for (int i = 0; i < time; i++) { str.append(number.charAt(i)); if (index % 3 == 0) { str.append("-"); index = 0; } index++; } String substring = number.substring(time); str.append(substring.substring(0, 2)); str.append("-"); str.append(substring.substring(2)); } if (len % 3 == 2) { int time = (len / 3) * 3; int index = 1; for (int i = 0; i < time; i++) { str.append(number.charAt(i)); if (index % 3 == 0) { str.append("-"); index = 0; } index++; } str.append(number.substring(time)); } return str.toString(); }
1695. Maximum Erasure Value
类似最长不重复子序列的,这里是求和最大。
public int maximumUniqueSubarray(int[] nums) { int[] q = new int[100005]; int[] sum = new int[nums.length + 1]; for (int i = 1; i <= nums.length; i++) { sum[i] = sum[i - 1] + nums[i - 1]; } int res = 0; int j = 0; for (int i = 0; i < nums.length; i++) { q[nums[i]]++; while (q[nums[i]] > 1) { q[nums[j]]--; j++; } res = Math.max(sum[i + 1] - sum[j], res); } return res; }