hexo博客换电脑了怎么办
我们搭建的hexo博客在更换电脑之后,如果重新搭建博客比较费时费力,可以按照以下资料快速在新的电脑上使用hexo博客发布内容。
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
示例 1:
输入:[“h”,”e”,”l”,”l”,”o”]
输出:[“o”,”l”,”l”,”e”,”h”]
字符串切片 —> reversString()
使用list.reverse()方法 —> reversString1()
使用reversed()函数 —> reversString2()
使用栈 —> reversString3()
将s列表看作一个栈,低端作为栈底,高端作为栈顶,依次将栈顶元素出栈即可。
for —> reversString4()
将列表中的第i个元素与倒数第i个元素交换(0< i < len(s)//2)
递归 —> reversString5()
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
先将 a 和 b 转化成十进制数,求和后再转化为二进制数
列竖式
末尾对齐,逐位相加,逢二进一
具体的,我们可以取 n=max{∣a∣,∣b∣},循环 n 次,从最低位开始遍历。我们使用一个变量 carry 表示上一个位置的进位,初始值为 0。记当前位置对其的两个位为 ai 和 bi,则每一位的答案为 (carry+ai+bi) mod 2,下一位的进位为 ⌊(carry+ai+bi)/2⌋。重复上述步骤,直到数字 a 和 b 的每一位计算完毕。最后如果 carry 的最高位不为 0,则将最高位添加到计算结果的末尾。
注意,为了让各个位置对齐,你可以先反转这个代表二进制数字的字符串,然后低下标对应低位,高下标对应高位。当然你也可以直接把 a 和 b 中短的那一个补 0 直到和长的那个一样长,然后从高位向低位遍历,对应位置的答案按照顺序存入答案字符串内,最终将答案串反转。
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
解释:”amanaplanacanalpanama” 是回文串
1.判断第i(0 < i < len(new_s)//2)个字符与倒数第i个字符是否相等来确定字符串是否回文,其中new_s是去除了除数字字母外字符的字符串
2.判断反转字符串是否与原字符串相同
3.双指针(去除除数字字母外的其他字符)
初始时,左右指针分别指向字符串的两侧,随后我们不断地将这两个指针相向移动,每次移动一步,并判断这两个指针指向的字符是否相同。当这两个指针相遇时,就说明是回文串。
4.双指针(直接在原字符串上进行判断)
与3.相同
给定一个正整数 n ,输出外观数列的第 n 项。
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。
你可以将其视作是由递归公式定义的数字字符串序列:
countAndSay(1) = “1”
countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。
前五项如下:
1
11
21
1211
111221
第一项是数字 1实现 strStr() 函数。
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
题目链接
直接调用python内置方法
暴力匹配
让字符串 needle 与字符串 haystack 的所有长度为 m(needle字符串的长度) 的子串均匹配一次。
为了减少不必要的匹配,我们每次匹配失败即立刻停止当前子串的匹配,对下一个子串继续匹配。如果当前子串匹配成功,我们返回当前子串的开始位置即可。如果所有子串都匹配失败,则返回 −1-1−1。
3.kmp算法
kmp算法的目的:为了避免不必要的指针回溯
主串指针i不回溯,模式串指针j的变化取决于模式串的结构是否有重复
pi数组值的计算:
pi数组的值为最长相同前后缀长度+1(串本身不能作为前后缀)
pi[1]=0,其他情况next[]=1.
给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。
请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。
nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。
1.暴力解法
对于每一个 nums1[i] 中的元素,先在 nums2 中找到它,然后向右遍历找到第 1 个大于 nums1[i] 的元素。
2.单调栈
步骤:
1)使用单调栈先对 nums2 中的每一个元素,求出它的右边第一个更大的元素;
2)将上一步的对应关系放入哈希表(HashMap)中;
3)再遍历数组 nums1,根据哈希表找出答案。
维护单调栈:
我们维护的栈恰好保证了单调性:栈中的元素从栈顶到栈底是单调不降的。
当我们遇到一个新的元素 nums2[i] 时,我们判断栈顶元素是否小于 nums2[i],
如果是,那么栈顶元素的下一个更大元素即为 nums2[i],我们将栈顶元素出栈。
重复这一操作,直到栈为空或者栈顶元素大于 nums2[i]。此时我们将 nums2[i] 入栈,
保持栈的单调性,并对接下来的 nums2[i + 1], nums2[i + 2] … 执行同样的操作。