请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入: s = “We are happy.”
输出: “We%20are%20happy.”
/**
* 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
*
* 示例 1:
* 输入: s = “We are happy.”
* 输出: “We%20are%20happy.”
*/
class p3Solution1{
public static String substitudespace(String s){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i) == ' '){
sb.append("%20");
}else {
sb.append(s.charAt(i));
}
}
String s_new = sb.toString();
return s_new;
}
}
88. 合并两个有序数组 * 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 * * 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。
/**
* 88. 合并两个有序数组
* 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
*
* 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。
*
* 思路1:直接将nums2添加到nums1,然后快排。时间复杂度(n+m)log(n+m)
*
* 思路2:由于是两个有序数组,要用到“有序”这个条件来降低时间复杂度
* 可以从后往前,比较两个数组的元素,由于nums1的长度足够,不会出现覆盖元素的情况。
*/
class p3Question2{
public static void Quicksort(int[] nums1,int n,int[] nums2,int m){
for (int i = n,j=0; j<nums2.length ;i++,j++) {
nums1[i] = nums2[j];
}
Arrays.sort(nums1);
}
public static void solution2(int[] nums1,int n,int[] nums2,int m){
// p1指向nums1元素的当前位置。p2指向nums2元素的当前位置。p指向数组中排好序的当前位置。
int p1 = n-1;
int p2 = m-1;
int p = nums1.length-1;
// 当p1或者p2<0时,说明有一个数组以及插空完成,只需要将剩下的数组直接插到最前面即可
while (p1>=0 && p2>=0 ){
if(nums1[p1] > nums2[p2]){
nums1[p] = nums1[p1];
p1--;
} else{
nums1[p] = nums2[p2];
p2--;
}
p--;
}
// length为p2+1,因为如果是p1<0,那么符合逻辑。如果是p2<0,由于p1本身前面就是排好序的,同样可以用该式子,只不过不会替换。
System.arraycopy(nums2,0,nums1,0,p2+1);
}
}