--
This commit is contained in:
parent
bd0902dfc4
commit
742d0471b2
@ -2,10 +2,7 @@ package cn.whaifree.leetCode.String;
|
|||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
|
|
||||||
public class LeetCode151 {
|
public class LeetCode151 {
|
||||||
@ -15,7 +12,7 @@ public class LeetCode151 {
|
|||||||
@Test
|
@Test
|
||||||
public void test() {
|
public void test() {
|
||||||
String s = " a b cd ef g ";
|
String s = " a b cd ef g ";
|
||||||
System.out.println(new Solution1().reverseWords(s));
|
System.out.println(new Solution2().reverseWords(s));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -109,4 +106,18 @@ public class LeetCode151 {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Solution2{
|
||||||
|
|
||||||
|
public String reverseWords(String s) {
|
||||||
|
// 删除前后空白
|
||||||
|
String trim = s.trim();
|
||||||
|
String[] split = trim.split("\\s+");
|
||||||
|
List<String> list = Arrays.asList(split);
|
||||||
|
Collections.reverse(list);
|
||||||
|
return String.join(" ", list);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
71
src/main/java/cn/whaifree/redo/LeetCode151.java
Normal file
71
src/main/java/cn/whaifree/redo/LeetCode151.java
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
package cn.whaifree.redo;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class LeetCode151 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
Solution solution = new Solution();
|
||||||
|
String s = solution.reverseWords(" abc def ");
|
||||||
|
|
||||||
|
System.out.println(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public String reverseWords(String s) {
|
||||||
|
|
||||||
|
// 去除空格
|
||||||
|
StringBuilder stringBuilder = removeExtraSpace(s);
|
||||||
|
// 逆转
|
||||||
|
reverse(stringBuilder, 0, stringBuilder.length() - 1);
|
||||||
|
// 对单词逆转
|
||||||
|
reverseWord(stringBuilder);
|
||||||
|
return stringBuilder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public StringBuilder removeExtraSpace(String s) {
|
||||||
|
int left = 0;
|
||||||
|
int right = s.length() - 1;
|
||||||
|
while (s.charAt(left)==' ') left++;
|
||||||
|
while (s.charAt(right)==' ') right--;
|
||||||
|
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
while (left <= right) {
|
||||||
|
if (s.charAt(left) != ' ' || s.charAt(left + 1) != ' ') {
|
||||||
|
stringBuilder.append(s.charAt(left));
|
||||||
|
}
|
||||||
|
left++;
|
||||||
|
}
|
||||||
|
return stringBuilder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reverse(StringBuilder s, int left, int right) {
|
||||||
|
while (left < right) {
|
||||||
|
char tmp = s.charAt(left);
|
||||||
|
s.setCharAt(left, s.charAt(right));
|
||||||
|
s.setCharAt(right, tmp);
|
||||||
|
left++;
|
||||||
|
right--;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void reverseWord(StringBuilder s) {
|
||||||
|
|
||||||
|
int left = 0;
|
||||||
|
int right = 0;
|
||||||
|
while (right <= s.length()) {
|
||||||
|
if (right == s.length() - 1 || s.charAt(right + 1) == ' ') {
|
||||||
|
reverse(s, left, right);
|
||||||
|
left = right++ + 2;
|
||||||
|
}
|
||||||
|
right++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
74
src/main/java/cn/whaifree/redo/LeetCode18.java
Normal file
74
src/main/java/cn/whaifree/redo/LeetCode18.java
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package cn.whaifree.redo;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class LeetCode18 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
// System.out.println(new Solution().fourSum(new int[]{1, 0, -1, 0, -2, 2}, 0));
|
||||||
|
int[] nums = new int[]{-3,-2,-1,0,0,1,2,3};
|
||||||
|
// [-3,0,1,2]
|
||||||
|
System.out.println(new Solution().fourSum(nums, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 四个数之和
|
||||||
|
class Solution {
|
||||||
|
public List<List<Integer>> fourSum(int[] nums, int target) {
|
||||||
|
|
||||||
|
Arrays.sort(nums);
|
||||||
|
List<List<Integer>> lists = new ArrayList<>();
|
||||||
|
|
||||||
|
if (nums[0] > target && nums[0] > 0) {
|
||||||
|
return lists;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < nums.length; i++) {
|
||||||
|
|
||||||
|
// 第一次给过
|
||||||
|
if (i > 0 && nums[i] == nums[i - 1]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (int j = i + 1; j < nums.length; j++) {
|
||||||
|
|
||||||
|
// 第一次给过
|
||||||
|
if (j > i + 1 && nums[j] == nums[j - 1]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rignt = nums.length - 1;
|
||||||
|
int left = j + 1;
|
||||||
|
while (left < rignt) {
|
||||||
|
int sum = nums[i] + nums[j] + nums[left] + nums[rignt];
|
||||||
|
if (sum > target) {
|
||||||
|
rignt--;
|
||||||
|
} else if (sum < target) {
|
||||||
|
left++;
|
||||||
|
} else {
|
||||||
|
lists.add(Arrays.asList(nums[i], nums[j], nums[left], nums[rignt]));
|
||||||
|
|
||||||
|
while (left < rignt && nums[left + 1] == nums[left]) left++;
|
||||||
|
// 注意这里 right-1
|
||||||
|
while (left < rignt && nums[rignt - 1] == nums[rignt]) rignt--;
|
||||||
|
|
||||||
|
left++;
|
||||||
|
rignt--;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return lists;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
src/main/java/cn/whaifree/redo/LeetCode209.java
Normal file
40
src/main/java/cn/whaifree/redo/LeetCode209.java
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package cn.whaifree.redo;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class LeetCode209 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
System.out.println(new Solution().minSubArrayLen(7, new int[]{2,3,1,2,4,3}));
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public int minSubArrayLen(int target, int[] nums) {
|
||||||
|
|
||||||
|
|
||||||
|
int left = 0;
|
||||||
|
int right = 0;
|
||||||
|
int min = Integer.MAX_VALUE;
|
||||||
|
int sum = 0;
|
||||||
|
|
||||||
|
while (right < nums.length) {
|
||||||
|
sum += nums[right];
|
||||||
|
|
||||||
|
while (sum >= target){
|
||||||
|
// sum内删除left
|
||||||
|
sum -= nums[left];
|
||||||
|
min = Math.min(min, right - left + 1);
|
||||||
|
left++;
|
||||||
|
}
|
||||||
|
right++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return min == Integer.MAX_VALUE ? 0 : min;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
31
src/main/java/cn/whaifree/redo/LeetCode28.java
Normal file
31
src/main/java/cn/whaifree/redo/LeetCode28.java
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package cn.whaifree.redo;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class LeetCode28 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
System.out.println(new Solution().strStr("hello", "h"));
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public int strStr(String haystack, String needle) {
|
||||||
|
|
||||||
|
|
||||||
|
int begin = 0;
|
||||||
|
int end = begin + needle.length();
|
||||||
|
while (end <= haystack.length()) {
|
||||||
|
if (haystack.substring(begin, end).equals(needle)) {
|
||||||
|
return begin;
|
||||||
|
}
|
||||||
|
begin++;
|
||||||
|
end++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user