LeetCode:面试题 01.02. 判定是否互为字符重排、 01.03. URL化(难度:🌟)

104 阅读3分钟

一、前言🌟

哈喽,小伙伴们,我是泽南👨‍🎓。不管你是准备跳槽还是在职苟着,都一起行动起来,顺应这个内卷时代干点该干的事儿👣。所以,赶紧跟着我的步伐卷起来吧⏰,变强从这一刻开始!➕🧈

二、题目介绍🌟

给定两个由小写字母组成的字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例 1:

输入: s1 = "abc", s2 = "bca"
输出: true 

示例 2:

输入: s1 = "abc", s2 = "bad"
输出: false

提示:

  • 0 <= len(s1) <= 100
  • 0 <= len(s2) <= 100

解法一 :拆分排序

解题思路:

  1. s.split("") 将字符串 s 拆分成单个字符组成的数组。
  2. sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0)) 对拆分后的数组进行排序,排序规则是按照字符的 Unicode 编码值升序排列。这里使用了箭头函数 (a, b) => a.charCodeAt(0) - b.charCodeAt(0) 来指定排序规则。
  3. join("") 将排序后的字符数组重新组合成字符串,返回排序后的字符串。
function CheckPermutation(s1: string, s2: string): boolean {
	return reorder(s1) === reorder(s2);
	
	function reorder(s: string): string {
		return s.split("").sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0)).join("");
	}
}

三、题目介绍🌟

URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

示例 1:

输入:"Mr John Smith    ", 13
输出:"Mr%20John%20Smith"

示例 2:

输入:"               ", 5
输出:"%20%20%20%20%20"

提示:

  • 字符串长度在 [0, 500000] 范围内。

解法一 :replace

解题思路:

  1. replace方法的第二个参数可传入函数,返回替换的值,函数接收的参数分别为: 当前匹配的字符串、当前序号、用于匹配的原字符串
  2. 全局匹配空格,若匹配到的空格的序号大于等于真实长度,则返回空,否则返回替换的字符。
var replaceSpaces = function(S, length) {
  return S.replace(/\s/g, (s, i) => (i >= length ? "" : "%20"));
};

解法二 :encodeURI

encodeURI() 是 JavaScript 内置的函数,用于将字符串转换为 URI(Uniform Resource Identifier)格式,即将字符串中的特殊字符进行转义,以便于在 URL、URI 和 HTTP 请求等场合下使用。

encodeURI() 函数的转义规则如下:

  • 保留字符:字母、数字、下划线、连字符、点号
  • 非 ASCII 字符:使用 UTF-8 编码,并将每个字节分别转换成 %xx 的格式(xx 表示字节的 16 进制值)
  • 特殊字符:将以下字符转换成 %xx 的格式:;, /, ?, :, @, &, =, +, $, ,, #, %, ^, [, ], {, }, |, , ", <, >, ~, ', !

encodeURI() 函数不会对 URL 和 URI 中的保留字符进行转义,因此如果需要对这些字符进行转义,可以使用 encodeURIComponent() 函数。两者的区别在于,encodeURIComponent() 函数会将所有非 ASCII 字符都进行转义,并将空格转义成 %20,而 encodeURI() 函数只会将空格转义成 %20

var replaceSpaces = function(S, length) { 
    return encodeURI(S.substring(0, length)) 
}; 

最后🌟:

☘️做你想做的人,没有时间限制,只要愿意,什么时候都可以start,

🍀你能从现在开始改变,也可以一成不变,这件事,没有规矩可言,你可以活出最精彩的自己。